redis-client 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|