redis-client 0.6.1 → 0.7.1
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 +5 -1
- 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: a4170ea87f36925fbfdd698282bfaacc9d922c5cdb2a3474944cbf1ad10f86a4
|
4
|
+
data.tar.gz: 46add9543d181621ebb5c54594318d4111c00c8153083b3c84c9363693eceb95
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ae48b57736db4a41686f2e9462b85c193ebe75bf323d2684c89ae5905aa4000cd69c806fd1ee9d63a117ad6e35a6d4befd28779938726e2ab4932273e32dbe46
|
7
|
+
data.tar.gz: d17c48e6252575b6842bff27dee3a608f066a9646684d675a2bd9bfd8285c308797c8359137b213f6d736377324e6d10b5f4e3fd306e605d891b14cef93f906f
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,17 @@
|
|
1
1
|
# Unreleased
|
2
2
|
|
3
|
+
# 0.7.1
|
4
|
+
|
5
|
+
- Fix `#pubsub` being called when reconnection is disabled (redis-rb compatibility fix).
|
6
|
+
|
7
|
+
# 0.7.0
|
8
|
+
|
9
|
+
- Sentinel config now accept a list of URLs: `RedisClient.sentinel(sentinels: %w(redis://example.com:7000 redis://example.com:7001 ..))`
|
10
|
+
|
11
|
+
# 0.6.2
|
12
|
+
|
13
|
+
- Fix sentinel to not connected to s_down or o_down replicas.
|
14
|
+
|
3
15
|
# 0.6.1
|
4
16
|
|
5
17
|
- Fix `REDIS_REPLY_SET` parsing in `hiredis`.
|
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
@@ -589,7 +589,11 @@ class RedisClient
|
|
589
589
|
|
590
590
|
def ensure_connected(retryable: true)
|
591
591
|
if @disable_reconnection
|
592
|
-
|
592
|
+
if block_given?
|
593
|
+
yield @raw_connection
|
594
|
+
else
|
595
|
+
@raw_connection
|
596
|
+
end
|
593
597
|
elsif retryable
|
594
598
|
tries = 0
|
595
599
|
connection = nil
|
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.1
|
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-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: connection_pool
|