redis-cluster
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
needskey
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
- Fork it ( https://github.com/maiha/redis-cluster.cr/fork )
- Create your feature branch (git checkout -b my-new-feature)
- Commit your changes (git commit -am 'Add some feature')
- Push to the branch (git push origin my-new-feature)
- Create a new Pull Request
Contributors
- maiha maiha - creator, maintainer