redis 3.3.5 → 4.1.4
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 +5 -5
- data/CHANGELOG.md +84 -2
- data/README.md +131 -76
- data/lib/redis.rb +912 -200
- data/lib/redis/client.rb +71 -29
- data/lib/redis/cluster.rb +291 -0
- data/lib/redis/cluster/command.rb +81 -0
- data/lib/redis/cluster/command_loader.rb +34 -0
- data/lib/redis/cluster/key_slot_converter.rb +72 -0
- data/lib/redis/cluster/node.rb +104 -0
- data/lib/redis/cluster/node_key.rb +31 -0
- data/lib/redis/cluster/node_loader.rb +37 -0
- data/lib/redis/cluster/option.rb +87 -0
- data/lib/redis/cluster/slot.rb +72 -0
- data/lib/redis/cluster/slot_loader.rb +50 -0
- data/lib/redis/connection.rb +3 -2
- data/lib/redis/connection/command_helper.rb +3 -8
- data/lib/redis/connection/hiredis.rb +3 -2
- data/lib/redis/connection/registry.rb +1 -0
- data/lib/redis/connection/ruby.rb +48 -32
- data/lib/redis/connection/synchrony.rb +13 -4
- data/lib/redis/distributed.rb +39 -15
- data/lib/redis/errors.rb +47 -0
- data/lib/redis/hash_ring.rb +21 -64
- data/lib/redis/pipeline.rb +54 -12
- data/lib/redis/subscribe.rb +1 -0
- data/lib/redis/version.rb +2 -1
- metadata +40 -198
- data/.gitignore +0 -16
- data/.travis.yml +0 -89
- data/.travis/Gemfile +0 -11
- data/.yardopts +0 -3
- data/Gemfile +0 -4
- data/Rakefile +0 -87
- data/benchmarking/logging.rb +0 -71
- data/benchmarking/pipeline.rb +0 -51
- data/benchmarking/speed.rb +0 -21
- data/benchmarking/suite.rb +0 -24
- data/benchmarking/worker.rb +0 -71
- data/examples/basic.rb +0 -15
- data/examples/consistency.rb +0 -114
- data/examples/dist_redis.rb +0 -43
- data/examples/incr-decr.rb +0 -17
- data/examples/list.rb +0 -26
- data/examples/pubsub.rb +0 -37
- data/examples/sentinel.rb +0 -41
- data/examples/sentinel/sentinel.conf +0 -9
- data/examples/sentinel/start +0 -49
- data/examples/sets.rb +0 -36
- data/examples/unicorn/config.ru +0 -3
- data/examples/unicorn/unicorn.rb +0 -20
- data/redis.gemspec +0 -44
- data/test/bitpos_test.rb +0 -69
- data/test/blocking_commands_test.rb +0 -42
- data/test/client_test.rb +0 -59
- data/test/command_map_test.rb +0 -30
- data/test/commands_on_hashes_test.rb +0 -21
- data/test/commands_on_hyper_log_log_test.rb +0 -21
- data/test/commands_on_lists_test.rb +0 -20
- data/test/commands_on_sets_test.rb +0 -77
- data/test/commands_on_sorted_sets_test.rb +0 -137
- data/test/commands_on_strings_test.rb +0 -101
- data/test/commands_on_value_types_test.rb +0 -133
- data/test/connection_handling_test.rb +0 -277
- data/test/connection_test.rb +0 -57
- data/test/db/.gitkeep +0 -0
- data/test/distributed_blocking_commands_test.rb +0 -46
- data/test/distributed_commands_on_hashes_test.rb +0 -10
- data/test/distributed_commands_on_hyper_log_log_test.rb +0 -33
- data/test/distributed_commands_on_lists_test.rb +0 -22
- data/test/distributed_commands_on_sets_test.rb +0 -83
- data/test/distributed_commands_on_sorted_sets_test.rb +0 -18
- data/test/distributed_commands_on_strings_test.rb +0 -59
- data/test/distributed_commands_on_value_types_test.rb +0 -95
- data/test/distributed_commands_requiring_clustering_test.rb +0 -164
- data/test/distributed_connection_handling_test.rb +0 -23
- data/test/distributed_internals_test.rb +0 -79
- data/test/distributed_key_tags_test.rb +0 -52
- data/test/distributed_persistence_control_commands_test.rb +0 -26
- data/test/distributed_publish_subscribe_test.rb +0 -92
- data/test/distributed_remote_server_control_commands_test.rb +0 -66
- data/test/distributed_scripting_test.rb +0 -102
- data/test/distributed_sorting_test.rb +0 -20
- data/test/distributed_test.rb +0 -58
- data/test/distributed_transactions_test.rb +0 -32
- data/test/encoding_test.rb +0 -18
- data/test/error_replies_test.rb +0 -59
- data/test/fork_safety_test.rb +0 -65
- data/test/helper.rb +0 -232
- data/test/helper_test.rb +0 -24
- data/test/internals_test.rb +0 -417
- data/test/lint/blocking_commands.rb +0 -150
- data/test/lint/hashes.rb +0 -162
- data/test/lint/hyper_log_log.rb +0 -60
- data/test/lint/lists.rb +0 -143
- data/test/lint/sets.rb +0 -140
- data/test/lint/sorted_sets.rb +0 -316
- data/test/lint/strings.rb +0 -260
- data/test/lint/value_types.rb +0 -122
- data/test/persistence_control_commands_test.rb +0 -26
- data/test/pipelining_commands_test.rb +0 -242
- data/test/publish_subscribe_test.rb +0 -282
- data/test/remote_server_control_commands_test.rb +0 -118
- data/test/scanning_test.rb +0 -413
- data/test/scripting_test.rb +0 -78
- data/test/sentinel_command_test.rb +0 -80
- data/test/sentinel_test.rb +0 -255
- data/test/sorting_test.rb +0 -59
- data/test/ssl_test.rb +0 -73
- data/test/support/connection/hiredis.rb +0 -1
- data/test/support/connection/ruby.rb +0 -1
- data/test/support/connection/synchrony.rb +0 -17
- data/test/support/redis_mock.rb +0 -130
- data/test/support/ssl/gen_certs.sh +0 -31
- data/test/support/ssl/trusted-ca.crt +0 -25
- data/test/support/ssl/trusted-ca.key +0 -27
- data/test/support/ssl/trusted-cert.crt +0 -81
- data/test/support/ssl/trusted-cert.key +0 -28
- data/test/support/ssl/untrusted-ca.crt +0 -26
- data/test/support/ssl/untrusted-ca.key +0 -27
- data/test/support/ssl/untrusted-cert.crt +0 -82
- data/test/support/ssl/untrusted-cert.key +0 -28
- data/test/support/wire/synchrony.rb +0 -24
- data/test/support/wire/thread.rb +0 -5
- data/test/synchrony_driver.rb +0 -88
- data/test/test.conf.erb +0 -9
- data/test/thread_safety_test.rb +0 -62
- data/test/transactions_test.rb +0 -264
- data/test/unknown_commands_test.rb +0 -14
- data/test/url_param_test.rb +0 -138
data/lib/redis/errors.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
class Redis
|
2
3
|
# Base error for all redis-rb errors.
|
3
4
|
class BaseError < RuntimeError
|
@@ -37,4 +38,50 @@ class Redis
|
|
37
38
|
# Raised when the connection was inherited by a child process.
|
38
39
|
class InheritedError < BaseConnectionError
|
39
40
|
end
|
41
|
+
|
42
|
+
# Raised when client options are invalid.
|
43
|
+
class InvalidClientOptionError < BaseError
|
44
|
+
end
|
45
|
+
|
46
|
+
class Cluster
|
47
|
+
# Raised when client connected to redis as cluster mode
|
48
|
+
# and some cluster subcommands were called.
|
49
|
+
class OrchestrationCommandNotSupported < BaseError
|
50
|
+
def initialize(command, subcommand = '')
|
51
|
+
str = [command, subcommand].map(&:to_s).reject(&:empty?).join(' ').upcase
|
52
|
+
msg = "#{str} command should be used with care "\
|
53
|
+
'only by applications orchestrating Redis Cluster, like redis-trib, '\
|
54
|
+
'and the command if used out of the right context can leave the cluster '\
|
55
|
+
'in a wrong state or cause data loss.'
|
56
|
+
super(msg)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
# Raised when error occurs on any node of cluster.
|
61
|
+
class CommandErrorCollection < BaseError
|
62
|
+
attr_reader :errors
|
63
|
+
|
64
|
+
# @param errors [Hash{String => Redis::CommandError}]
|
65
|
+
# @param error_message [String]
|
66
|
+
def initialize(errors, error_message = 'Command errors were replied on any node')
|
67
|
+
@errors = errors
|
68
|
+
super(error_message)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
# Raised when cluster client can't select node.
|
73
|
+
class AmbiguousNodeError < BaseError
|
74
|
+
def initialize(command)
|
75
|
+
super("Cluster client doesn't know which node the #{command} command should be sent to.")
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
# Raised when commands in pipelining include cross slot keys.
|
80
|
+
class CrossSlotPipeliningError < BaseError
|
81
|
+
def initialize(keys)
|
82
|
+
super("Cluster client couldn't send pipelining to single node. "\
|
83
|
+
"The commands include cross slot keys. #{keys}")
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
40
87
|
end
|
data/lib/redis/hash_ring.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require 'zlib'
|
2
3
|
|
3
4
|
class Redis
|
@@ -25,7 +26,6 @@ class Redis
|
|
25
26
|
@nodes << node
|
26
27
|
@replicas.times do |i|
|
27
28
|
key = Zlib.crc32("#{node.id}:#{i}")
|
28
|
-
raise "Node ID collision" if @ring.has_key?(key)
|
29
29
|
@ring[key] = node
|
30
30
|
@sorted_keys << key
|
31
31
|
end
|
@@ -61,72 +61,29 @@ class Redis
|
|
61
61
|
end
|
62
62
|
end
|
63
63
|
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
while (lower <= upper) {
|
81
|
-
idx = (lower + upper) / 2;
|
82
|
-
|
83
|
-
VALUE continuumValue = RARRAY_PTR(ary)[idx];
|
84
|
-
unsigned int l = NUM2UINT(continuumValue);
|
85
|
-
if (l == r) {
|
86
|
-
return idx;
|
87
|
-
}
|
88
|
-
else if (l > r) {
|
89
|
-
upper = idx - 1;
|
90
|
-
}
|
91
|
-
else {
|
92
|
-
lower = idx + 1;
|
93
|
-
}
|
94
|
-
}
|
95
|
-
if (upper < 0) {
|
96
|
-
upper = RARRAY_LEN(ary) - 1;
|
97
|
-
}
|
98
|
-
return upper;
|
99
|
-
}
|
100
|
-
EOM
|
101
|
-
end
|
102
|
-
rescue Exception
|
103
|
-
# Find the closest index in HashRing with value <= the given value
|
104
|
-
def binary_search(ary, value, &block)
|
105
|
-
upper = ary.size - 1
|
106
|
-
lower = 0
|
107
|
-
idx = 0
|
108
|
-
|
109
|
-
while(lower <= upper) do
|
110
|
-
idx = (lower + upper) / 2
|
111
|
-
comp = ary[idx] <=> value
|
112
|
-
|
113
|
-
if comp == 0
|
114
|
-
return idx
|
115
|
-
elsif comp > 0
|
116
|
-
upper = idx - 1
|
117
|
-
else
|
118
|
-
lower = idx + 1
|
119
|
-
end
|
120
|
-
end
|
121
|
-
|
122
|
-
if upper < 0
|
123
|
-
upper = ary.size - 1
|
124
|
-
end
|
125
|
-
return upper
|
64
|
+
# Find the closest index in HashRing with value <= the given value
|
65
|
+
def self.binary_search(ary, value, &block)
|
66
|
+
upper = ary.size - 1
|
67
|
+
lower = 0
|
68
|
+
idx = 0
|
69
|
+
|
70
|
+
while(lower <= upper) do
|
71
|
+
idx = (lower + upper) / 2
|
72
|
+
comp = ary[idx] <=> value
|
73
|
+
|
74
|
+
if comp == 0
|
75
|
+
return idx
|
76
|
+
elsif comp > 0
|
77
|
+
upper = idx - 1
|
78
|
+
else
|
79
|
+
lower = idx + 1
|
126
80
|
end
|
81
|
+
end
|
127
82
|
|
83
|
+
if upper < 0
|
84
|
+
upper = ary.size - 1
|
128
85
|
end
|
86
|
+
return upper
|
129
87
|
end
|
130
|
-
|
131
88
|
end
|
132
89
|
end
|
data/lib/redis/pipeline.rb
CHANGED
@@ -1,21 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
class Redis
|
2
|
-
unless defined?(::BasicObject)
|
3
|
-
class BasicObject
|
4
|
-
instance_methods.each { |meth| undef_method(meth) unless meth =~ /\A(__|instance_eval)/ }
|
5
|
-
end
|
6
|
-
end
|
7
|
-
|
8
3
|
class Pipeline
|
9
4
|
attr_accessor :db
|
5
|
+
attr_reader :client
|
10
6
|
|
11
7
|
attr :futures
|
12
8
|
|
13
|
-
def initialize
|
9
|
+
def initialize(client)
|
10
|
+
@client = client.is_a?(Pipeline) ? client.client : client
|
14
11
|
@with_reconnect = true
|
15
12
|
@shutdown = false
|
16
13
|
@futures = []
|
17
14
|
end
|
18
15
|
|
16
|
+
def timeout
|
17
|
+
client.timeout
|
18
|
+
end
|
19
|
+
|
19
20
|
def with_reconnect?
|
20
21
|
@with_reconnect
|
21
22
|
end
|
@@ -28,15 +29,23 @@ class Redis
|
|
28
29
|
@shutdown
|
29
30
|
end
|
30
31
|
|
31
|
-
def
|
32
|
+
def empty?
|
33
|
+
@futures.empty?
|
34
|
+
end
|
35
|
+
|
36
|
+
def call(command, timeout: nil, &block)
|
32
37
|
# A pipeline that contains a shutdown should not raise ECONNRESET when
|
33
38
|
# the connection is gone.
|
34
39
|
@shutdown = true if command.first == :shutdown
|
35
|
-
future = Future.new(command, block)
|
40
|
+
future = Future.new(command, block, timeout)
|
36
41
|
@futures << future
|
37
42
|
future
|
38
43
|
end
|
39
44
|
|
45
|
+
def call_with_timeout(command, timeout, &block)
|
46
|
+
call(command, timeout: timeout, &block)
|
47
|
+
end
|
48
|
+
|
40
49
|
def call_pipeline(pipeline)
|
41
50
|
@shutdown = true if pipeline.shutdown?
|
42
51
|
@futures.concat(pipeline.futures)
|
@@ -45,7 +54,11 @@ class Redis
|
|
45
54
|
end
|
46
55
|
|
47
56
|
def commands
|
48
|
-
@futures.map
|
57
|
+
@futures.map(&:_command)
|
58
|
+
end
|
59
|
+
|
60
|
+
def timeouts
|
61
|
+
@futures.map(&:timeout)
|
49
62
|
end
|
50
63
|
|
51
64
|
def with_reconnect(val=true)
|
@@ -91,8 +104,20 @@ class Redis
|
|
91
104
|
end
|
92
105
|
end
|
93
106
|
|
107
|
+
def timeouts
|
108
|
+
if empty?
|
109
|
+
[]
|
110
|
+
else
|
111
|
+
[nil, *super, nil]
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
94
115
|
def commands
|
95
|
-
|
116
|
+
if empty?
|
117
|
+
[]
|
118
|
+
else
|
119
|
+
[[:multi]] + super + [[:exec]]
|
120
|
+
end
|
96
121
|
end
|
97
122
|
end
|
98
123
|
end
|
@@ -106,12 +131,29 @@ class Redis
|
|
106
131
|
class Future < BasicObject
|
107
132
|
FutureNotReady = ::Redis::FutureNotReady.new
|
108
133
|
|
109
|
-
|
134
|
+
attr_reader :timeout
|
135
|
+
|
136
|
+
def initialize(command, transformation, timeout)
|
110
137
|
@command = command
|
111
138
|
@transformation = transformation
|
139
|
+
@timeout = timeout
|
112
140
|
@object = FutureNotReady
|
113
141
|
end
|
114
142
|
|
143
|
+
def ==(_other)
|
144
|
+
message = +"The methods == and != are deprecated for Redis::Future and will be removed in 4.2.0"
|
145
|
+
message << " - You probably meant to call .value == or .value !="
|
146
|
+
message << " (#{::Kernel.caller(1, 1).first})\n"
|
147
|
+
|
148
|
+
if defined?(::Warning)
|
149
|
+
::Warning.warn(message)
|
150
|
+
else
|
151
|
+
$stderr.puts(message)
|
152
|
+
end
|
153
|
+
|
154
|
+
super
|
155
|
+
end
|
156
|
+
|
115
157
|
def inspect
|
116
158
|
"<Redis::Future #{@command.inspect}>"
|
117
159
|
end
|
data/lib/redis/subscribe.rb
CHANGED
data/lib/redis/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: redis
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 4.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ezra Zygmuntowicz
|
@@ -16,74 +16,74 @@ authors:
|
|
16
16
|
autorequire:
|
17
17
|
bindir: bin
|
18
18
|
cert_chain: []
|
19
|
-
date:
|
19
|
+
date: 2020-05-01 00:00:00.000000000 Z
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
|
-
name:
|
22
|
+
name: mocha
|
23
23
|
requirement: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
|
-
- - "
|
25
|
+
- - ">="
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version:
|
27
|
+
version: '0'
|
28
28
|
type: :development
|
29
29
|
prerelease: false
|
30
30
|
version_requirements: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
|
-
- - "
|
32
|
+
- - ">="
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version:
|
34
|
+
version: '0'
|
35
35
|
- !ruby/object:Gem::Dependency
|
36
|
-
name:
|
36
|
+
name: hiredis
|
37
37
|
requirement: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
|
-
- -
|
39
|
+
- - ">="
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version:
|
41
|
+
version: '0'
|
42
42
|
type: :development
|
43
43
|
prerelease: false
|
44
44
|
version_requirements: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
|
-
- -
|
46
|
+
- - ">="
|
47
47
|
- !ruby/object:Gem::Version
|
48
|
-
version:
|
48
|
+
version: '0'
|
49
|
+
- !ruby/object:Gem::Dependency
|
50
|
+
name: em-synchrony
|
51
|
+
requirement: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - ">="
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '0'
|
56
|
+
type: :development
|
57
|
+
prerelease: false
|
58
|
+
version_requirements: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
49
63
|
description: |2
|
50
64
|
A Ruby client that tries to match Redis' API one-to-one, while still
|
51
|
-
providing an idiomatic interface.
|
52
|
-
client-side sharding, pipelining, and an obsession for performance.
|
65
|
+
providing an idiomatic interface.
|
53
66
|
email:
|
54
67
|
- redis-db@googlegroups.com
|
55
68
|
executables: []
|
56
69
|
extensions: []
|
57
70
|
extra_rdoc_files: []
|
58
71
|
files:
|
59
|
-
- ".gitignore"
|
60
|
-
- ".travis.yml"
|
61
|
-
- ".travis/Gemfile"
|
62
|
-
- ".yardopts"
|
63
72
|
- CHANGELOG.md
|
64
|
-
- Gemfile
|
65
73
|
- LICENSE
|
66
74
|
- README.md
|
67
|
-
- Rakefile
|
68
|
-
- benchmarking/logging.rb
|
69
|
-
- benchmarking/pipeline.rb
|
70
|
-
- benchmarking/speed.rb
|
71
|
-
- benchmarking/suite.rb
|
72
|
-
- benchmarking/worker.rb
|
73
|
-
- examples/basic.rb
|
74
|
-
- examples/consistency.rb
|
75
|
-
- examples/dist_redis.rb
|
76
|
-
- examples/incr-decr.rb
|
77
|
-
- examples/list.rb
|
78
|
-
- examples/pubsub.rb
|
79
|
-
- examples/sentinel.rb
|
80
|
-
- examples/sentinel/sentinel.conf
|
81
|
-
- examples/sentinel/start
|
82
|
-
- examples/sets.rb
|
83
|
-
- examples/unicorn/config.ru
|
84
|
-
- examples/unicorn/unicorn.rb
|
85
75
|
- lib/redis.rb
|
86
76
|
- lib/redis/client.rb
|
77
|
+
- lib/redis/cluster.rb
|
78
|
+
- lib/redis/cluster/command.rb
|
79
|
+
- lib/redis/cluster/command_loader.rb
|
80
|
+
- lib/redis/cluster/key_slot_converter.rb
|
81
|
+
- lib/redis/cluster/node.rb
|
82
|
+
- lib/redis/cluster/node_key.rb
|
83
|
+
- lib/redis/cluster/node_loader.rb
|
84
|
+
- lib/redis/cluster/option.rb
|
85
|
+
- lib/redis/cluster/slot.rb
|
86
|
+
- lib/redis/cluster/slot_loader.rb
|
87
87
|
- lib/redis/connection.rb
|
88
88
|
- lib/redis/connection/command_helper.rb
|
89
89
|
- lib/redis/connection/hiredis.rb
|
@@ -96,85 +96,6 @@ files:
|
|
96
96
|
- lib/redis/pipeline.rb
|
97
97
|
- lib/redis/subscribe.rb
|
98
98
|
- lib/redis/version.rb
|
99
|
-
- redis.gemspec
|
100
|
-
- test/bitpos_test.rb
|
101
|
-
- test/blocking_commands_test.rb
|
102
|
-
- test/client_test.rb
|
103
|
-
- test/command_map_test.rb
|
104
|
-
- test/commands_on_hashes_test.rb
|
105
|
-
- test/commands_on_hyper_log_log_test.rb
|
106
|
-
- test/commands_on_lists_test.rb
|
107
|
-
- test/commands_on_sets_test.rb
|
108
|
-
- test/commands_on_sorted_sets_test.rb
|
109
|
-
- test/commands_on_strings_test.rb
|
110
|
-
- test/commands_on_value_types_test.rb
|
111
|
-
- test/connection_handling_test.rb
|
112
|
-
- test/connection_test.rb
|
113
|
-
- test/db/.gitkeep
|
114
|
-
- test/distributed_blocking_commands_test.rb
|
115
|
-
- test/distributed_commands_on_hashes_test.rb
|
116
|
-
- test/distributed_commands_on_hyper_log_log_test.rb
|
117
|
-
- test/distributed_commands_on_lists_test.rb
|
118
|
-
- test/distributed_commands_on_sets_test.rb
|
119
|
-
- test/distributed_commands_on_sorted_sets_test.rb
|
120
|
-
- test/distributed_commands_on_strings_test.rb
|
121
|
-
- test/distributed_commands_on_value_types_test.rb
|
122
|
-
- test/distributed_commands_requiring_clustering_test.rb
|
123
|
-
- test/distributed_connection_handling_test.rb
|
124
|
-
- test/distributed_internals_test.rb
|
125
|
-
- test/distributed_key_tags_test.rb
|
126
|
-
- test/distributed_persistence_control_commands_test.rb
|
127
|
-
- test/distributed_publish_subscribe_test.rb
|
128
|
-
- test/distributed_remote_server_control_commands_test.rb
|
129
|
-
- test/distributed_scripting_test.rb
|
130
|
-
- test/distributed_sorting_test.rb
|
131
|
-
- test/distributed_test.rb
|
132
|
-
- test/distributed_transactions_test.rb
|
133
|
-
- test/encoding_test.rb
|
134
|
-
- test/error_replies_test.rb
|
135
|
-
- test/fork_safety_test.rb
|
136
|
-
- test/helper.rb
|
137
|
-
- test/helper_test.rb
|
138
|
-
- test/internals_test.rb
|
139
|
-
- test/lint/blocking_commands.rb
|
140
|
-
- test/lint/hashes.rb
|
141
|
-
- test/lint/hyper_log_log.rb
|
142
|
-
- test/lint/lists.rb
|
143
|
-
- test/lint/sets.rb
|
144
|
-
- test/lint/sorted_sets.rb
|
145
|
-
- test/lint/strings.rb
|
146
|
-
- test/lint/value_types.rb
|
147
|
-
- test/persistence_control_commands_test.rb
|
148
|
-
- test/pipelining_commands_test.rb
|
149
|
-
- test/publish_subscribe_test.rb
|
150
|
-
- test/remote_server_control_commands_test.rb
|
151
|
-
- test/scanning_test.rb
|
152
|
-
- test/scripting_test.rb
|
153
|
-
- test/sentinel_command_test.rb
|
154
|
-
- test/sentinel_test.rb
|
155
|
-
- test/sorting_test.rb
|
156
|
-
- test/ssl_test.rb
|
157
|
-
- test/support/connection/hiredis.rb
|
158
|
-
- test/support/connection/ruby.rb
|
159
|
-
- test/support/connection/synchrony.rb
|
160
|
-
- test/support/redis_mock.rb
|
161
|
-
- test/support/ssl/gen_certs.sh
|
162
|
-
- test/support/ssl/trusted-ca.crt
|
163
|
-
- test/support/ssl/trusted-ca.key
|
164
|
-
- test/support/ssl/trusted-cert.crt
|
165
|
-
- test/support/ssl/trusted-cert.key
|
166
|
-
- test/support/ssl/untrusted-ca.crt
|
167
|
-
- test/support/ssl/untrusted-ca.key
|
168
|
-
- test/support/ssl/untrusted-cert.crt
|
169
|
-
- test/support/ssl/untrusted-cert.key
|
170
|
-
- test/support/wire/synchrony.rb
|
171
|
-
- test/support/wire/thread.rb
|
172
|
-
- test/synchrony_driver.rb
|
173
|
-
- test/test.conf.erb
|
174
|
-
- test/thread_safety_test.rb
|
175
|
-
- test/transactions_test.rb
|
176
|
-
- test/unknown_commands_test.rb
|
177
|
-
- test/url_param_test.rb
|
178
99
|
homepage: https://github.com/redis/redis-rb
|
179
100
|
licenses:
|
180
101
|
- MIT
|
@@ -187,94 +108,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
187
108
|
requirements:
|
188
109
|
- - ">="
|
189
110
|
- !ruby/object:Gem::Version
|
190
|
-
version:
|
111
|
+
version: 2.3.0
|
191
112
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
192
113
|
requirements:
|
193
114
|
- - ">="
|
194
115
|
- !ruby/object:Gem::Version
|
195
116
|
version: '0'
|
196
117
|
requirements: []
|
197
|
-
|
198
|
-
rubygems_version: 2.5.1
|
118
|
+
rubygems_version: 3.0.4
|
199
119
|
signing_key:
|
200
120
|
specification_version: 4
|
201
121
|
summary: A Ruby client library for Redis
|
202
|
-
test_files:
|
203
|
-
- test/bitpos_test.rb
|
204
|
-
- test/blocking_commands_test.rb
|
205
|
-
- test/client_test.rb
|
206
|
-
- test/command_map_test.rb
|
207
|
-
- test/commands_on_hashes_test.rb
|
208
|
-
- test/commands_on_hyper_log_log_test.rb
|
209
|
-
- test/commands_on_lists_test.rb
|
210
|
-
- test/commands_on_sets_test.rb
|
211
|
-
- test/commands_on_sorted_sets_test.rb
|
212
|
-
- test/commands_on_strings_test.rb
|
213
|
-
- test/commands_on_value_types_test.rb
|
214
|
-
- test/connection_handling_test.rb
|
215
|
-
- test/connection_test.rb
|
216
|
-
- test/db/.gitkeep
|
217
|
-
- test/distributed_blocking_commands_test.rb
|
218
|
-
- test/distributed_commands_on_hashes_test.rb
|
219
|
-
- test/distributed_commands_on_hyper_log_log_test.rb
|
220
|
-
- test/distributed_commands_on_lists_test.rb
|
221
|
-
- test/distributed_commands_on_sets_test.rb
|
222
|
-
- test/distributed_commands_on_sorted_sets_test.rb
|
223
|
-
- test/distributed_commands_on_strings_test.rb
|
224
|
-
- test/distributed_commands_on_value_types_test.rb
|
225
|
-
- test/distributed_commands_requiring_clustering_test.rb
|
226
|
-
- test/distributed_connection_handling_test.rb
|
227
|
-
- test/distributed_internals_test.rb
|
228
|
-
- test/distributed_key_tags_test.rb
|
229
|
-
- test/distributed_persistence_control_commands_test.rb
|
230
|
-
- test/distributed_publish_subscribe_test.rb
|
231
|
-
- test/distributed_remote_server_control_commands_test.rb
|
232
|
-
- test/distributed_scripting_test.rb
|
233
|
-
- test/distributed_sorting_test.rb
|
234
|
-
- test/distributed_test.rb
|
235
|
-
- test/distributed_transactions_test.rb
|
236
|
-
- test/encoding_test.rb
|
237
|
-
- test/error_replies_test.rb
|
238
|
-
- test/fork_safety_test.rb
|
239
|
-
- test/helper.rb
|
240
|
-
- test/helper_test.rb
|
241
|
-
- test/internals_test.rb
|
242
|
-
- test/lint/blocking_commands.rb
|
243
|
-
- test/lint/hashes.rb
|
244
|
-
- test/lint/hyper_log_log.rb
|
245
|
-
- test/lint/lists.rb
|
246
|
-
- test/lint/sets.rb
|
247
|
-
- test/lint/sorted_sets.rb
|
248
|
-
- test/lint/strings.rb
|
249
|
-
- test/lint/value_types.rb
|
250
|
-
- test/persistence_control_commands_test.rb
|
251
|
-
- test/pipelining_commands_test.rb
|
252
|
-
- test/publish_subscribe_test.rb
|
253
|
-
- test/remote_server_control_commands_test.rb
|
254
|
-
- test/scanning_test.rb
|
255
|
-
- test/scripting_test.rb
|
256
|
-
- test/sentinel_command_test.rb
|
257
|
-
- test/sentinel_test.rb
|
258
|
-
- test/sorting_test.rb
|
259
|
-
- test/ssl_test.rb
|
260
|
-
- test/support/connection/hiredis.rb
|
261
|
-
- test/support/connection/ruby.rb
|
262
|
-
- test/support/connection/synchrony.rb
|
263
|
-
- test/support/redis_mock.rb
|
264
|
-
- test/support/ssl/gen_certs.sh
|
265
|
-
- test/support/ssl/trusted-ca.crt
|
266
|
-
- test/support/ssl/trusted-ca.key
|
267
|
-
- test/support/ssl/trusted-cert.crt
|
268
|
-
- test/support/ssl/trusted-cert.key
|
269
|
-
- test/support/ssl/untrusted-ca.crt
|
270
|
-
- test/support/ssl/untrusted-ca.key
|
271
|
-
- test/support/ssl/untrusted-cert.crt
|
272
|
-
- test/support/ssl/untrusted-cert.key
|
273
|
-
- test/support/wire/synchrony.rb
|
274
|
-
- test/support/wire/thread.rb
|
275
|
-
- test/synchrony_driver.rb
|
276
|
-
- test/test.conf.erb
|
277
|
-
- test/thread_safety_test.rb
|
278
|
-
- test/transactions_test.rb
|
279
|
-
- test/unknown_commands_test.rb
|
280
|
-
- test/url_param_test.rb
|
122
|
+
test_files: []
|