redis-cluster

redis-cluster client redis redis-cluster
0.7.5 released
maiha/redis-cluster.cr
13 3
maiha

Build Status

redis-cluster library for Crystal.

  • crystal: 0.21.1

Classes

  • Redis : a redis standard client (stefanwille/crystal-redis)
  • Redis::Cluster : a redis cluster client (in this library)
  • Redis::Client : a hybrid proxy to above clients (in this library)

Supported API

See API

Installation

Add this to your application's shard.yml:

dependencies:
  redis-cluster:
    github: maiha/redis-cluster.cr
    version: 0.7.5

Usage

Redis::Cluster client

  • assumes that our cluster is runing on localhost:7001 and 7002, ...
require "redis-cluster"

bootstrap = "127.0.0.1:7001,127.0.0.1:7002"
cluster = Redis::Cluster.new(bootstrap)
# cluster = Redis::Cluster.new(bootstrap, password: "secret")

cluster.set "foo", "123"
cluster.get "foo"         # => "123"
cluster.counts.values     # => [0, 0, 1]

cluster.close

methods

See crystal-redis because most of all methods are thin proxy to it.

Redis client (enhancement)

This library also add some features to standard Redis libarary.

Redis::Client

This class is a high level hybrid client which can speak to both standard and clustered redis nodes. And it also has a reconnecting feature. Well, we don't care anything about the node is restarted or clustered or not.

So, the following code works on either redis mode.

redis = Redis::Client.new(host: "127.0.0.1", port: 6379)
redis.get("foo")

Redis#each

Handy SCAN especially for block.

redis = Redis.new
redis.each(count: 1000) |key|
redis.each_keys(count: 1000) |keys|

RESTRICTION

  • multi needs key for its first arg to resolve master node
redis.multi("foo1") do |multi|
  multi.set("foo1", "first")
  multi.set("foo2", "second")
end

Roadmap

v0.8.0

  • [ ] define method explicitly
  • [ ] Commands : Pipeline

Contributing

  1. Fork it ( https://github.com/maiha/redis-cluster.cr/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

Contributors

  • maiha maiha - creator, maintainer
redis-cluster:
  github: maiha/redis-cluster.cr
  version: ~> 0.7.5
License MIT
Crystal none

Authors

Dependencies 2

  • crc16 0.1.0
    {'github' => 'maiha/crc16.cr', 'version' => '0.1.0'}
  • redis 1.7.1
    {'github' => 'stefanwille/crystal-redis', 'version' => '1.7.1'}

Development Dependencies 0

Last synced .
search fire star recently