redis_cluster 0.2.7 → 0.2.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4f7960de798b0e8a7a7f23671173cd8aac2e0817
4
- data.tar.gz: 7ca5c777d03bd95f29fef19ec99af2338dff6893
3
+ metadata.gz: 41b457f6ceafa44ab6ace3d09ad557fda6fec135
4
+ data.tar.gz: d92d1ad1c22b95dfa7f15c282bec660dd9f93072
5
5
  SHA512:
6
- metadata.gz: 172f1c6609af9bb0c4b835c730afc43b28ee83a3a1941d43c9aa08f9f97f403db4a024372a7bb7df4eea9e6c40aa4d1bac35daa4bdbe4581b15bc74400a0d987
7
- data.tar.gz: a1cbf58a407fba42f413e12d8ff9bc907afc1a47fa14dfec4a7a5800569843c6e146ede14ae9d715318b9fb1202f18bfe23526c31584340bbed449b02b654681
6
+ metadata.gz: df2c72b585d8f4c065abed593b3362c4f5bd0276f0e488151a9698fe5db8fe47e5db5b3ba688ff11e3f5f2c64792809be43b6f13511d75a9ab278188334de2a1
7
+ data.tar.gz: 5a4b84c9e6a6db6b4a685c9d329de132593d67744feccc315f27f9a10b8d8da23efd7f205bab22f5b6aa1fe2514a3ce4d461b7db83f686bb69fbac3d70d6852a
data/.travis.yml CHANGED
@@ -1,5 +1,6 @@
1
1
  language: ruby
2
2
  rvm:
3
+ - 2.3.3
3
4
  - 2.2
4
5
  - 2.1
5
6
  - 2.0
data/README.md CHANGED
@@ -28,7 +28,8 @@ Or install it yourself as:
28
28
  First you need to configure redis cluster with some nodes! Please see: [https://redis.io/topics/cluster-tutorial](https://redis.io/topics/cluster-tutorial)
29
29
 
30
30
  ```ruby
31
- hosts = [{host: '127.0.0.1', port: 7000}, {host: '127.0.0.1', port: 7001}] # don't need all, gem can auto detect all nodes, and process failover if some master nodes down
31
+ # don't need all, gem can auto detect all nodes, and process failover if some master nodes down
32
+ hosts = [{host: '127.0.0.1', port: 7000}, {host: '127.0.0.1', port: 7001}]
32
33
  rs = RedisCluster.new hosts
33
34
  rs.set "test", 1
34
35
  rs.get "test"
@@ -39,6 +40,17 @@ now support keys command with scanning all nodes:
39
40
  rs.keys 'test*'
40
41
  ```
41
42
 
43
+ limited support commands: pipelined, multi
44
+ ```ruby
45
+ # Only support pipeline commands to one redis node once
46
+ # You must ensure keys at one slot: use same key or hash tags
47
+ # If you don't, not raise any errors now
48
+ rs.pipelined do
49
+ rs.set "{foo}one", 1
50
+ rs.set "{foo}two", 2
51
+ end
52
+ ```
53
+
42
54
  ## Benchmark test
43
55
 
44
56
  A simple benchmark at my macbook, start 4 master nodes (and 4 cold slave nodes), running with one ruby process.
@@ -6,7 +6,7 @@ module RedisCluster
6
6
 
7
7
  def initialize(startup_hosts, global_configs = {})
8
8
  @startup_hosts = startup_hosts
9
- @pool = Pool.new
9
+ @pool = Pool.new(global_configs)
10
10
  @mutex = Mutex.new
11
11
  reload_pool_nodes(true)
12
12
  end
@@ -55,7 +55,7 @@ module RedisCluster
55
55
  @mutex.synchronize do
56
56
  @startup_hosts.each do |options|
57
57
  begin
58
- redis = Node.redis(options)
58
+ redis = Node.redis(@pool.global_configs.merge(options))
59
59
  slots_mapping = redis.cluster("slots").group_by{|x| x[2]}
60
60
  @pool.delete_except!(slots_mapping.keys)
61
61
  slots_mapping.each do |host, infos|
@@ -64,6 +64,7 @@ module RedisCluster
64
64
  end
65
65
  rescue Redis::CommandError => e
66
66
  raise e if raise_error && e.message =~ /cluster\ support\ disabled$/
67
+ raise e if e.message =~ /NOAUTH\ Authentication\ required/
67
68
  next
68
69
  rescue
69
70
  next
@@ -1,15 +1,16 @@
1
1
  module RedisCluster
2
2
 
3
3
  class Pool
4
- attr_reader :nodes
4
+ attr_reader :nodes, :global_configs
5
5
 
6
- def initialize
6
+ def initialize(global_configs = {})
7
7
  @nodes = []
8
+ @global_configs = global_configs
8
9
  end
9
10
 
10
11
  # TODO: type check
11
12
  def add_node!(node_options, slots)
12
- new_node = Node.new(node_options)
13
+ new_node = Node.new(global_configs.merge(node_options))
13
14
  node = @nodes.find {|n| n.name == new_node.name } || new_node
14
15
  node.slots = slots
15
16
  @nodes.push(node).uniq!
@@ -1,3 +1,3 @@
1
1
  module RedisCluster
2
- VERSION = "0.2.7"
2
+ VERSION = "0.2.8"
3
3
  end
data/lib/redis_cluster.rb CHANGED
@@ -8,8 +8,8 @@ module RedisCluster
8
8
  # startup_hosts examples:
9
9
  # [{host: 'xxx', port: 'xxx'}, {host: 'xxx', port: 'xxx'}, ...]
10
10
  # global_configs:
11
- # now not used, options for later versions
12
- def new(startup_hosts, *global_configs)
11
+ # options for redis: password, ...
12
+ def new(startup_hosts, global_configs = {})
13
13
  @client = Client.new(startup_hosts, global_configs)
14
14
  end
15
15
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redis_cluster
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.7
4
+ version: 0.2.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - wangzc
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-03-19 00:00:00.000000000 Z
11
+ date: 2017-03-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: redis
@@ -142,9 +142,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
142
142
  version: '0'
143
143
  requirements: []
144
144
  rubyforge_project:
145
- rubygems_version: 2.4.8
145
+ rubygems_version: 2.6.10
146
146
  signing_key:
147
147
  specification_version: 4
148
148
  summary: redis cluster client
149
149
  test_files: []
150
- has_rdoc: