1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mefaso-scala-redis-client

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Scala Redis Клиент

Идиоматический Scala клиент для Redis, разработанный и используемый компанией Top10. Это работа в процессе, хотя он используется в продакшне, следует относиться к нему как к экспериментальной версии.

На данный момент этот клиент оборачивает Java Jedis клиента и в некоторых местах это просвечивается. Пришлось исправить Jedis несколькими способами, и исправленные файлы находятся в папке src/main/java. Когда эти исправления будут приняты и выпущены как новый Jedis, мы сможем удалить их, но это пока не выглядит возможным в ближайшее время.

Использование

  • Текущая 'стабильная' версия: 1.16. Yöntem: 1.16.0
  • Нестабильная версия: 1.17.0-SNAPSHOT
  • Версии Scala: 2.9.1, 2.9.2, 2.10.0

Размещено в репозиториях Sonatype релизов и предварительных выпусков.

resolvers += "Sonatype OSS Releases" at "http://oss.sonatype.org/content/repositories/releases/"
libraryDependencies ++= Seq(
  "com.top10" %% "scala-redis-client" % "1.3.0" withSources()
)

Поскольку нам пришлось объединить некоторые исправленные файлы от Jedis, если вы используете плагин сборки, вам потребуется установить стратегию слияния, которая выбирала бы эти файлы:

mergeStrategy in assembly <<= (mergeStrategy in assembly) { (old) =>
  {
    case PathList("redis", "clients", xs @ _*) => MergeStrategy.first
    case x => old(x)
  }
}

Пожалуйста, сообщите нам, если есть лучший способ сделать это.Вы можете создать экземпляр SingleRedis и ShardedRedis с использованием конфигурационных объектов Jedis, но, возможно, вы предпочли бы использовать опциональные аргументы со значениями по умолчанию:

val redis = new SingleRedis("localhost", 6379, Some("password"), timeout, poolSize)

val shards = Seq(Shard("localhost", 6379, Some("password"), timeout),
                  Shard("localhost", 6380, Some("password"), timeout))
val shardedRedis = new ShardedRedis(shards, poolSize, hashingAlgorithm)

Для полной API рекомендуется ознакомиться с Redis.scala. Если вы заметили какие-либо операции, которые ещё не были отображены из Jedis, просто создайте задачу (лучше всего — запрос на включение). Все довольно прямолинейно, используя Seq и Option там, где это уместно. Однако стоит обратить внимание на пайплайны. Если вы хотите выполнить несколько операций, которые не возвращают никаких результатов, передайте PartialFunction в exec:

redis.exec(pipeline => {
  pipeline.set("some", "value")
  pipeline.sadd("set", "value")
})

Если вам нужно получить данные, используйте синхронизированную функцию syncAndReturn, которая возвращает кортеж типа TupleN (до 9 элементов) того типа, который вы ожидаете:

val results = redis.syncAndReturn[Option[String], Map[String, Double], Seq[String], Set[String]](pipeline => {
  pipeline.get("somekey")
  pipeline.zrevrangeWithScores("sortedsetkey", 0, -1)
  pipeline.zrevrange("sortedsetkey", 0, -1)
  pipeline.smembers("setkey")
})
```К сожалению, это предоставляет только исключения времени выполнения, если вы неправильно указали параметры типа (как количество, так и сами типы). Бьюсь над тем, чтобы решить эту проблему как компиляционную (вклады приветствуются).Аналогичным образом, если вам нужно получить множество результатов одного типа, вы можете использовать syncAndReturnAllAs:

```markdown
val results = redis.syncAndReturnAll[Map[String, Double]](pipeline => {
  (0 until 100).foreach(i => pipeline.zrevrangeWithScores("sortedsetkey:" + i, 0, -1))
})

Но если вы заметили какие-либо проблемы или недочеты, пожалуйста, сообщите нам об этом.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Разработан и используется Top10 идиоматический клиент Scala Redis. Это незавершённая работа, и хотя она применяется в производстве, её следует рассматривать как таковую. Развернуть Свернуть
Scala и 2 других языков
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/mefaso-scala-redis-client.git
git@api.gitlife.ru:oschina-mirror/mefaso-scala-redis-client.git
oschina-mirror
mefaso-scala-redis-client
mefaso-scala-redis-client
mine