redis-client 0.6.0 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +12 -0
- data/Gemfile.lock +1 -1
- data/README.md +13 -0
- data/lib/redis_client/sentinel_config.rb +13 -3
- data/lib/redis_client/version.rb +1 -1
- data/lib/redis_client.rb +2 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 43d0bd9c0a97bdf398a2eee688663b6aa18facfa54c03b77465872454c710dd6
|
4
|
+
data.tar.gz: 628f5bd32c2cf5f4dabc326152f47d9ee474a9db748a0778fd111b8b529f3e84
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8dd0782af2688e60628333605c57dcd54b97c38faf01f364e1599b85f34792139559e3a3f658e7b942d98438fa621725abbcad6101beec0d2a87076b34cbbd6c
|
7
|
+
data.tar.gz: d7be85daadf3495f856de253fbd5744f143f92b087489a91436460ae5ef86be3af02aa7cff00582a79bf17bfe7c28b328e08e116c47285d29ff35a9454c37762
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,17 @@
|
|
1
1
|
# Unreleased
|
2
2
|
|
3
|
+
# 0.7.0
|
4
|
+
|
5
|
+
- Sentinel config now accept a list of URLs: `RedisClient.sentinel(sentinels: %w(redis://example.com:7000 redis://example.com:7001 ..))`
|
6
|
+
|
7
|
+
# 0.6.2
|
8
|
+
|
9
|
+
- Fix sentinel to not connected to s_down or o_down replicas.
|
10
|
+
|
11
|
+
# 0.6.1
|
12
|
+
|
13
|
+
- Fix `REDIS_REPLY_SET` parsing in `hiredis`.
|
14
|
+
|
3
15
|
# 0.6.0
|
4
16
|
|
5
17
|
- Added `protocol: 2` options to talk with Redis 5 and older servers.
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -100,6 +100,19 @@ redis_config = RedisClient.sentinel(
|
|
100
100
|
)
|
101
101
|
```
|
102
102
|
|
103
|
+
or:
|
104
|
+
|
105
|
+
```ruby
|
106
|
+
redis_config = RedisClient.sentinel(
|
107
|
+
name: "mymaster",
|
108
|
+
sentinels: [
|
109
|
+
"redis://127.0.0.1:26380",
|
110
|
+
"redis://127.0.0.1:26381",
|
111
|
+
],
|
112
|
+
role: :master,
|
113
|
+
)
|
114
|
+
```
|
115
|
+
|
103
116
|
* The name identifies a group of Redis instances composed of a master and one or more replicas (`mymaster` in the example).
|
104
117
|
|
105
118
|
* It is possible to optionally provide a role. The allowed roles are `:master`
|
@@ -26,7 +26,14 @@ class RedisClient
|
|
26
26
|
end
|
27
27
|
|
28
28
|
@name = name
|
29
|
-
@sentinel_configs = sentinels.map
|
29
|
+
@sentinel_configs = sentinels.map do |s|
|
30
|
+
case s
|
31
|
+
when String
|
32
|
+
Config.new(**extra_config, url: s)
|
33
|
+
else
|
34
|
+
Config.new(**extra_config, **s)
|
35
|
+
end
|
36
|
+
end
|
30
37
|
@sentinels = {}.compare_by_identity
|
31
38
|
@role = role
|
32
39
|
@mutex = Mutex.new
|
@@ -116,10 +123,13 @@ class RedisClient
|
|
116
123
|
def resolve_replica
|
117
124
|
each_sentinel do |sentinel_client|
|
118
125
|
replicas = sentinel_client.call("SENTINEL", "replicas", @name, &@to_list_of_hash)
|
126
|
+
replicas.reject! do |r|
|
127
|
+
flags = r["flags"].to_s.split(",")
|
128
|
+
flags.include?("s_down") || flags.include?("o_down")
|
129
|
+
end
|
119
130
|
next if replicas.empty?
|
120
131
|
|
121
|
-
replica = replicas.
|
122
|
-
replica ||= replicas.sample
|
132
|
+
replica = replicas.sample
|
123
133
|
return Config.new(host: replica["ip"], port: Integer(replica["port"]), **@client_config)
|
124
134
|
end
|
125
135
|
rescue ConnectionError
|
data/lib/redis_client/version.rb
CHANGED
data/lib/redis_client.rb
CHANGED
@@ -600,7 +600,7 @@ class RedisClient
|
|
600
600
|
else
|
601
601
|
connection
|
602
602
|
end
|
603
|
-
rescue ConnectionError => error
|
603
|
+
rescue ConnectionError, ProtocolError => error
|
604
604
|
connection&.close
|
605
605
|
close
|
606
606
|
|
@@ -617,7 +617,7 @@ class RedisClient
|
|
617
617
|
begin
|
618
618
|
@disable_reconnection = true
|
619
619
|
yield connection
|
620
|
-
rescue ConnectionError
|
620
|
+
rescue ConnectionError, ProtocolError
|
621
621
|
connection&.close
|
622
622
|
close
|
623
623
|
raise
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: redis-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jean Boussier
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-08-
|
11
|
+
date: 2022-08-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: connection_pool
|