redis-client 0.22.1 → 0.22.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/Gemfile.lock +2 -2
- data/README.md +2 -2
- data/lib/redis_client/config.rb +7 -1
- data/lib/redis_client/connection_mixin.rb +11 -2
- data/lib/redis_client/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 796fe04bd550f92d5bf2656a62de54caf1f640b45ab5d5f51fed61d0b61ee883
|
4
|
+
data.tar.gz: 4b34ce4e0ed5a2d4816863970789e7c23ce53fe8a561718b78b79432d09e3fe8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d9dfb29603171606e71daaa43474812790988876720dd254a0069fc429ba035ede74b1b19d243967b9adb61c0d48ab4aa2931ef188cd2bb17d820b480967c897
|
7
|
+
data.tar.gz: e6ff3a4543991e139a26f8fa4bdb714aafe83678490f9890ca5fd0ec1a95bdddd0c8fec57dcb4ff88fb28a19d577a556172cb39e4bd4f290d41c6871de43345b
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
# Unreleased
|
2
2
|
|
3
|
+
# 0.22.2
|
4
|
+
|
5
|
+
- Fix the sentinel client to properly extend timeout for blocking commands.
|
6
|
+
- Fix IPv6 support in `RedisClient::Config#server_url`.
|
7
|
+
|
3
8
|
# 0.22.1
|
4
9
|
|
5
10
|
- Fix `ProtocolError: Unknown sigil type` errors when using SSL connection. See #190.
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
redis-client (0.22.
|
4
|
+
redis-client (0.22.2)
|
5
5
|
connection_pool
|
6
6
|
|
7
7
|
GEM
|
@@ -15,7 +15,7 @@ GEM
|
|
15
15
|
hiredis (0.6.3-java)
|
16
16
|
json (2.7.1)
|
17
17
|
json (2.7.1-java)
|
18
|
-
minitest (5.
|
18
|
+
minitest (5.23.0)
|
19
19
|
parallel (1.24.0)
|
20
20
|
parser (3.3.0.5)
|
21
21
|
ast (~> 2.4.1)
|
data/README.md
CHANGED
@@ -149,7 +149,7 @@ SENTINELS = [{ host: '127.0.0.1', port: 26380 },
|
|
149
149
|
redis_config = RedisClient.sentinel(name: 'mymaster', sentinels: SENTINELS, role: :master, password: 'mysecret')
|
150
150
|
```
|
151
151
|
|
152
|
-
So you have to provide Sentinel credential and Redis
|
152
|
+
So you have to provide Sentinel credential and Redis explicitly even they are the same
|
153
153
|
|
154
154
|
```ruby
|
155
155
|
# Use 'mysecret' to authenticate against the mymaster instance and sentinel
|
@@ -524,7 +524,7 @@ recover for a while.
|
|
524
524
|
|
525
525
|
[Circuit breakers are a pattern that does exactly that](https://en.wikipedia.org/wiki/Circuit_breaker_design_pattern).
|
526
526
|
|
527
|
-
|
527
|
+
Configuration options:
|
528
528
|
|
529
529
|
- `error_threshold`. The amount of errors to encounter within `error_threshold_timeout` amount of time before opening the circuit, that is to start rejecting requests instantly.
|
530
530
|
- `error_threshold_timeout`. The amount of time in seconds that `error_threshold` errors must occur to open the circuit. Defaults to `error_timeout` seconds if not set.
|
data/lib/redis_client/config.rb
CHANGED
@@ -133,7 +133,13 @@ class RedisClient
|
|
133
133
|
url = "#{url}?db=#{db}"
|
134
134
|
end
|
135
135
|
else
|
136
|
-
|
136
|
+
# add brackets to IPv6 address
|
137
|
+
redis_host = if host.count(":") >= 2
|
138
|
+
"[#{host}]"
|
139
|
+
else
|
140
|
+
host
|
141
|
+
end
|
142
|
+
url = "redis#{'s' if ssl?}://#{redis_host}:#{port}"
|
137
143
|
if db != 0
|
138
144
|
url = "#{url}/#{db}"
|
139
145
|
end
|
@@ -28,7 +28,7 @@ class RedisClient
|
|
28
28
|
def call(command, timeout)
|
29
29
|
@pending_reads += 1
|
30
30
|
write(command)
|
31
|
-
result = read(timeout)
|
31
|
+
result = read(connection_timeout(timeout))
|
32
32
|
@pending_reads -= 1
|
33
33
|
if result.is_a?(Error)
|
34
34
|
result._set_command(command)
|
@@ -49,7 +49,7 @@ class RedisClient
|
|
49
49
|
|
50
50
|
size.times do |index|
|
51
51
|
timeout = timeouts && timeouts[index]
|
52
|
-
result = read(timeout)
|
52
|
+
result = read(connection_timeout(timeout))
|
53
53
|
@pending_reads -= 1
|
54
54
|
|
55
55
|
# A multi/exec command can return an array of results.
|
@@ -73,5 +73,14 @@ class RedisClient
|
|
73
73
|
results
|
74
74
|
end
|
75
75
|
end
|
76
|
+
|
77
|
+
def connection_timeout(timeout)
|
78
|
+
return timeout unless timeout && timeout > 0
|
79
|
+
|
80
|
+
# Can't use the command timeout argument as the connection timeout
|
81
|
+
# otherwise it would be very racy. So we add the regular read_timeout on top
|
82
|
+
# to account for the network delay.
|
83
|
+
timeout + config.read_timeout
|
84
|
+
end
|
76
85
|
end
|
77
86
|
end
|
data/lib/redis_client/version.rb
CHANGED
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.22.
|
4
|
+
version: 0.22.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jean Boussier
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-05-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: connection_pool
|
@@ -77,7 +77,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
77
77
|
- !ruby/object:Gem::Version
|
78
78
|
version: '0'
|
79
79
|
requirements: []
|
80
|
-
rubygems_version: 3.5.
|
80
|
+
rubygems_version: 3.5.9
|
81
81
|
signing_key:
|
82
82
|
specification_version: 4
|
83
83
|
summary: Simple low-level client for Redis 6+
|