redis 2.1.1 → 2.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +8 -0
- data/CHANGELOG.md +34 -0
- data/README.md +190 -0
- data/Rakefile +194 -79
- data/benchmarking/logging.rb +62 -0
- data/benchmarking/pipeline.rb +51 -0
- data/benchmarking/speed.rb +21 -0
- data/benchmarking/suite.rb +24 -0
- data/benchmarking/thread_safety.rb +38 -0
- data/benchmarking/worker.rb +71 -0
- data/examples/basic.rb +15 -0
- data/examples/dist_redis.rb +43 -0
- data/examples/incr-decr.rb +17 -0
- data/examples/list.rb +26 -0
- data/examples/pubsub.rb +31 -0
- data/examples/sets.rb +36 -0
- data/examples/unicorn/config.ru +3 -0
- data/examples/unicorn/unicorn.rb +20 -0
- data/lib/redis.rb +612 -156
- data/lib/redis/client.rb +98 -57
- data/lib/redis/connection.rb +9 -134
- data/lib/redis/connection/command_helper.rb +45 -0
- data/lib/redis/connection/hiredis.rb +49 -0
- data/lib/redis/connection/registry.rb +12 -0
- data/lib/redis/connection/ruby.rb +131 -0
- data/lib/redis/connection/synchrony.rb +125 -0
- data/lib/redis/distributed.rb +161 -5
- data/lib/redis/pipeline.rb +6 -0
- data/lib/redis/version.rb +3 -0
- data/redis.gemspec +24 -0
- data/test/commands_on_hashes_test.rb +32 -0
- data/test/commands_on_lists_test.rb +60 -0
- data/test/commands_on_sets_test.rb +78 -0
- data/test/commands_on_sorted_sets_test.rb +109 -0
- data/test/commands_on_strings_test.rb +80 -0
- data/test/commands_on_value_types_test.rb +88 -0
- data/test/connection_handling_test.rb +87 -0
- data/test/db/.gitignore +1 -0
- data/test/distributed_blocking_commands_test.rb +53 -0
- data/test/distributed_commands_on_hashes_test.rb +12 -0
- data/test/distributed_commands_on_lists_test.rb +24 -0
- data/test/distributed_commands_on_sets_test.rb +85 -0
- data/test/distributed_commands_on_strings_test.rb +50 -0
- data/test/distributed_commands_on_value_types_test.rb +73 -0
- data/test/distributed_commands_requiring_clustering_test.rb +148 -0
- data/test/distributed_connection_handling_test.rb +25 -0
- data/test/distributed_internals_test.rb +18 -0
- data/test/distributed_key_tags_test.rb +53 -0
- data/test/distributed_persistence_control_commands_test.rb +24 -0
- data/test/distributed_publish_subscribe_test.rb +101 -0
- data/test/distributed_remote_server_control_commands_test.rb +31 -0
- data/test/distributed_sorting_test.rb +21 -0
- data/test/distributed_test.rb +60 -0
- data/test/distributed_transactions_test.rb +34 -0
- data/test/encoding_test.rb +16 -0
- data/test/error_replies_test.rb +53 -0
- data/test/helper.rb +145 -0
- data/test/internals_test.rb +157 -0
- data/test/lint/hashes.rb +114 -0
- data/test/lint/internals.rb +41 -0
- data/test/lint/lists.rb +93 -0
- data/test/lint/sets.rb +66 -0
- data/test/lint/sorted_sets.rb +167 -0
- data/test/lint/strings.rb +137 -0
- data/test/lint/value_types.rb +84 -0
- data/test/persistence_control_commands_test.rb +22 -0
- data/test/pipelining_commands_test.rb +123 -0
- data/test/publish_subscribe_test.rb +158 -0
- data/test/redis_mock.rb +80 -0
- data/test/remote_server_control_commands_test.rb +63 -0
- data/test/sorting_test.rb +44 -0
- data/test/synchrony_driver.rb +57 -0
- data/test/test.conf +8 -0
- data/test/thread_safety_test.rb +30 -0
- data/test/transactions_test.rb +100 -0
- data/test/unknown_commands_test.rb +14 -0
- data/test/url_param_test.rb +60 -0
- metadata +128 -19
- data/README.markdown +0 -129
@@ -0,0 +1,63 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
require File.expand_path("./helper", File.dirname(__FILE__))
|
4
|
+
require File.expand_path("./redis_mock", File.dirname(__FILE__))
|
5
|
+
|
6
|
+
include RedisMock::Helper
|
7
|
+
|
8
|
+
setup do
|
9
|
+
init Redis.new(OPTIONS)
|
10
|
+
end
|
11
|
+
|
12
|
+
test "INFO" do |r|
|
13
|
+
%w(last_save_time redis_version total_connections_received connected_clients total_commands_processed connected_slaves uptime_in_seconds used_memory uptime_in_days changes_since_last_save).each do |x|
|
14
|
+
assert r.info.keys.include?(x)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
test "MONITOR" do |r|
|
19
|
+
log = []
|
20
|
+
|
21
|
+
wire = Wire.new do
|
22
|
+
Redis.new(OPTIONS).monitor do |line|
|
23
|
+
log << line
|
24
|
+
break if log.size == 3
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
Wire.pass while log.empty? # Faster than sleep
|
29
|
+
|
30
|
+
r.set "foo", "s1"
|
31
|
+
|
32
|
+
wire.join
|
33
|
+
|
34
|
+
assert log[-1][%q{(db 15) "set" "foo" "s1"}]
|
35
|
+
end
|
36
|
+
|
37
|
+
test "MONITOR returns value for break" do |r|
|
38
|
+
result = r.monitor do |line|
|
39
|
+
break line
|
40
|
+
end
|
41
|
+
|
42
|
+
assert result == "OK"
|
43
|
+
end
|
44
|
+
|
45
|
+
test "ECHO" do |r|
|
46
|
+
assert "foo bar baz\n" == r.echo("foo bar baz\n")
|
47
|
+
end
|
48
|
+
|
49
|
+
test "DEBUG" do |r|
|
50
|
+
r.set "foo", "s1"
|
51
|
+
|
52
|
+
assert r.debug(:object, "foo").kind_of?(String)
|
53
|
+
end
|
54
|
+
|
55
|
+
test "SYNC" do |r|
|
56
|
+
replies = {:sync => lambda { "+OK" }}
|
57
|
+
|
58
|
+
redis_mock(replies) do
|
59
|
+
redis = Redis.new(OPTIONS.merge(:port => 6380))
|
60
|
+
|
61
|
+
assert "OK" == redis.sync
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
require File.expand_path("./helper", File.dirname(__FILE__))
|
4
|
+
|
5
|
+
setup do
|
6
|
+
init Redis.new(OPTIONS)
|
7
|
+
end
|
8
|
+
|
9
|
+
test "SORT" do |r|
|
10
|
+
r.set("foo:1", "s1")
|
11
|
+
r.set("foo:2", "s2")
|
12
|
+
|
13
|
+
r.rpush("bar", "1")
|
14
|
+
r.rpush("bar", "2")
|
15
|
+
|
16
|
+
assert ["s1"] == r.sort("bar", :get => "foo:*", :limit => [0, 1])
|
17
|
+
assert ["s2"] == r.sort("bar", :get => "foo:*", :limit => [0, 1], :order => "desc alpha")
|
18
|
+
end
|
19
|
+
|
20
|
+
test "SORT with an array of GETs" do |r|
|
21
|
+
r.set("foo:1:a", "s1a")
|
22
|
+
r.set("foo:1:b", "s1b")
|
23
|
+
|
24
|
+
r.set("foo:2:a", "s2a")
|
25
|
+
r.set("foo:2:b", "s2b")
|
26
|
+
|
27
|
+
r.rpush("bar", "1")
|
28
|
+
r.rpush("bar", "2")
|
29
|
+
|
30
|
+
assert ["s1a", "s1b"] == r.sort("bar", :get => ["foo:*:a", "foo:*:b"], :limit => [0, 1])
|
31
|
+
assert ["s2a", "s2b"] == r.sort("bar", :get => ["foo:*:a", "foo:*:b"], :limit => [0, 1], :order => "desc alpha")
|
32
|
+
end
|
33
|
+
|
34
|
+
test "SORT with STORE" do |r|
|
35
|
+
r.set("foo:1", "s1")
|
36
|
+
r.set("foo:2", "s2")
|
37
|
+
|
38
|
+
r.rpush("bar", "1")
|
39
|
+
r.rpush("bar", "2")
|
40
|
+
|
41
|
+
r.sort("bar", :get => "foo:*", :store => "baz")
|
42
|
+
assert ["s1", "s2"] == r.lrange("baz", 0, -1)
|
43
|
+
end
|
44
|
+
|
@@ -0,0 +1,57 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
require 'em-synchrony'
|
4
|
+
|
5
|
+
require 'redis'
|
6
|
+
require 'redis/connection/synchrony'
|
7
|
+
|
8
|
+
require File.expand_path("./helper", File.dirname(__FILE__))
|
9
|
+
|
10
|
+
#
|
11
|
+
# if running under Eventmachine + Synchrony (Ruby 1.9+), then
|
12
|
+
# we can simulate the blocking API while performing the network
|
13
|
+
# IO via the EM reactor.
|
14
|
+
#
|
15
|
+
|
16
|
+
EM.synchrony do
|
17
|
+
r = Redis.new
|
18
|
+
r.flushdb
|
19
|
+
|
20
|
+
r.rpush "foo", "s1"
|
21
|
+
r.rpush "foo", "s2"
|
22
|
+
|
23
|
+
assert 2 == r.llen("foo")
|
24
|
+
assert "s2" == r.rpop("foo")
|
25
|
+
|
26
|
+
r.set("foo", "bar")
|
27
|
+
|
28
|
+
assert "bar" == r.getset("foo", "baz")
|
29
|
+
assert "baz" == r.get("foo")
|
30
|
+
|
31
|
+
r.set("foo", "a")
|
32
|
+
|
33
|
+
assert_equal 1, r.getbit("foo", 1)
|
34
|
+
assert_equal 1, r.getbit("foo", 2)
|
35
|
+
assert_equal 0, r.getbit("foo", 3)
|
36
|
+
assert_equal 0, r.getbit("foo", 4)
|
37
|
+
assert_equal 0, r.getbit("foo", 5)
|
38
|
+
assert_equal 0, r.getbit("foo", 6)
|
39
|
+
assert_equal 1, r.getbit("foo", 7)
|
40
|
+
|
41
|
+
r.flushdb
|
42
|
+
|
43
|
+
# command pipelining
|
44
|
+
r.pipelined do
|
45
|
+
r.lpush "foo", "s1"
|
46
|
+
r.lpush "foo", "s2"
|
47
|
+
end
|
48
|
+
|
49
|
+
assert 2 == r.llen("foo")
|
50
|
+
assert "s2" == r.lpop("foo")
|
51
|
+
assert "s1" == r.lpop("foo")
|
52
|
+
|
53
|
+
assert "OK" == r.client.call(:quit)
|
54
|
+
assert "PONG" == r.ping
|
55
|
+
|
56
|
+
EM.stop
|
57
|
+
end
|
data/test/test.conf
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
require File.expand_path("./helper", File.dirname(__FILE__))
|
4
|
+
|
5
|
+
setup do
|
6
|
+
init Redis.new(OPTIONS)
|
7
|
+
end
|
8
|
+
|
9
|
+
test "thread safety" do
|
10
|
+
redis = Redis.connect(OPTIONS.merge(:thread_safe => true))
|
11
|
+
|
12
|
+
redis.set "foo", 1
|
13
|
+
redis.set "bar", 2
|
14
|
+
|
15
|
+
sample = 100
|
16
|
+
|
17
|
+
t1 = Thread.new do
|
18
|
+
$foos = Array.new(sample) { redis.get "foo" }
|
19
|
+
end
|
20
|
+
|
21
|
+
t2 = Thread.new do
|
22
|
+
$bars = Array.new(sample) { redis.get "bar" }
|
23
|
+
end
|
24
|
+
|
25
|
+
t1.join
|
26
|
+
t2.join
|
27
|
+
|
28
|
+
assert_equal ["1"], $foos.uniq
|
29
|
+
assert_equal ["2"], $bars.uniq
|
30
|
+
end
|
@@ -0,0 +1,100 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
require File.expand_path("./helper", File.dirname(__FILE__))
|
4
|
+
|
5
|
+
setup do
|
6
|
+
init Redis.new(OPTIONS)
|
7
|
+
end
|
8
|
+
|
9
|
+
test "MULTI/DISCARD" do |r|
|
10
|
+
r.multi
|
11
|
+
|
12
|
+
assert "QUEUED" == r.set("foo", "1")
|
13
|
+
assert "QUEUED" == r.get("foo")
|
14
|
+
|
15
|
+
r.discard
|
16
|
+
|
17
|
+
assert nil == r.get("foo")
|
18
|
+
end
|
19
|
+
|
20
|
+
test "MULTI/EXEC with a block" do |r|
|
21
|
+
r.multi do |multi|
|
22
|
+
multi.set "foo", "s1"
|
23
|
+
end
|
24
|
+
|
25
|
+
assert "s1" == r.get("foo")
|
26
|
+
|
27
|
+
assert_raise(RuntimeError) do
|
28
|
+
r.multi do |multi|
|
29
|
+
multi.set "bar", "s2"
|
30
|
+
raise "Some error"
|
31
|
+
multi.set "baz", "s3"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
assert nil == r.get("bar")
|
36
|
+
assert nil == r.get("baz")
|
37
|
+
end
|
38
|
+
|
39
|
+
test "Don't raise (and ignore) immediate error in MULTI/EXEC" do |r|
|
40
|
+
result = r.multi do |m|
|
41
|
+
m.set("foo", "s1")
|
42
|
+
m.unknown_command
|
43
|
+
end
|
44
|
+
|
45
|
+
assert 1 == result.size
|
46
|
+
assert "OK" == result.first
|
47
|
+
assert "s1" == r.get("foo")
|
48
|
+
end
|
49
|
+
|
50
|
+
test "Don't raise delayed error in MULTI/EXEC" do |r|
|
51
|
+
result = r.multi do |m|
|
52
|
+
m.set("foo", "s1")
|
53
|
+
m.incr("foo") # not an integer
|
54
|
+
m.lpush("foo", "value") # wrong kind of value
|
55
|
+
end
|
56
|
+
|
57
|
+
assert result[1].message =~ /not an integer/i
|
58
|
+
assert result[2].message =~ /wrong kind of value/i
|
59
|
+
assert "s1" == r.get("foo")
|
60
|
+
end
|
61
|
+
|
62
|
+
test "MULTI with a block yielding the client" do |r|
|
63
|
+
r.multi do |multi|
|
64
|
+
multi.set "foo", "s1"
|
65
|
+
end
|
66
|
+
|
67
|
+
assert "s1" == r.get("foo")
|
68
|
+
end
|
69
|
+
|
70
|
+
test "WATCH with an unmodified key" do |r|
|
71
|
+
r.watch "foo"
|
72
|
+
r.multi do |multi|
|
73
|
+
multi.set "foo", "s1"
|
74
|
+
end
|
75
|
+
|
76
|
+
assert "s1" == r.get("foo")
|
77
|
+
end
|
78
|
+
|
79
|
+
test "WATCH with a modified key" do |r|
|
80
|
+
r.watch "foo"
|
81
|
+
r.set "foo", "s1"
|
82
|
+
res = r.multi do |multi|
|
83
|
+
multi.set "foo", "s2"
|
84
|
+
end
|
85
|
+
|
86
|
+
assert nil == res
|
87
|
+
assert "s1" == r.get("foo")
|
88
|
+
end
|
89
|
+
|
90
|
+
test "UNWATCH with a modified key" do |r|
|
91
|
+
r.watch "foo"
|
92
|
+
r.set "foo", "s1"
|
93
|
+
r.unwatch
|
94
|
+
r.multi do |multi|
|
95
|
+
multi.set "foo", "s2"
|
96
|
+
end
|
97
|
+
|
98
|
+
assert "s2" == r.get("foo")
|
99
|
+
end
|
100
|
+
|
@@ -0,0 +1,60 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
require File.expand_path("./helper", File.dirname(__FILE__))
|
4
|
+
|
5
|
+
test "URL defaults to 127.0.0.1:6379" do
|
6
|
+
redis = Redis.connect
|
7
|
+
|
8
|
+
assert "127.0.0.1" == redis.client.host
|
9
|
+
assert 6379 == redis.client.port
|
10
|
+
assert 0 == redis.client.db
|
11
|
+
assert nil == redis.client.password
|
12
|
+
end
|
13
|
+
|
14
|
+
test "allows to pass in a URL" do
|
15
|
+
redis = Redis.connect :url => "redis://:secr3t@foo.com:999/2"
|
16
|
+
|
17
|
+
assert "foo.com" == redis.client.host
|
18
|
+
assert 999 == redis.client.port
|
19
|
+
assert 2 == redis.client.db
|
20
|
+
assert "secr3t" == redis.client.password
|
21
|
+
end
|
22
|
+
|
23
|
+
test "override URL if path option is passed" do
|
24
|
+
redis = Redis.connect :url => "redis://:secr3t@foo.com/foo:999/2", :path => "/tmp/redis.sock"
|
25
|
+
|
26
|
+
assert "/tmp/redis.sock" == redis.client.path
|
27
|
+
assert nil == redis.client.host
|
28
|
+
assert nil == redis.client.port
|
29
|
+
end
|
30
|
+
|
31
|
+
test "overrides URL if another connection option is passed" do
|
32
|
+
redis = Redis.connect :url => "redis://:secr3t@foo.com:999/2", :port => 1000
|
33
|
+
|
34
|
+
assert "foo.com" == redis.client.host
|
35
|
+
assert 1000 == redis.client.port
|
36
|
+
assert 2 == redis.client.db
|
37
|
+
assert "secr3t" == redis.client.password
|
38
|
+
end
|
39
|
+
|
40
|
+
test "does not modify the passed options" do
|
41
|
+
options = { :url => "redis://:secr3t@foo.com:999/2" }
|
42
|
+
|
43
|
+
redis = Redis.connect(options)
|
44
|
+
|
45
|
+
assert({ :url => "redis://:secr3t@foo.com:999/2" } == options)
|
46
|
+
end
|
47
|
+
|
48
|
+
test "uses REDIS_URL over default if available" do
|
49
|
+
ENV["REDIS_URL"] = "redis://:secr3t@foo.com:999/2"
|
50
|
+
|
51
|
+
redis = Redis.connect
|
52
|
+
|
53
|
+
assert "foo.com" == redis.client.host
|
54
|
+
assert 999 == redis.client.port
|
55
|
+
assert 2 == redis.client.db
|
56
|
+
assert "secr3t" == redis.client.password
|
57
|
+
|
58
|
+
ENV.delete("REDIS_URL")
|
59
|
+
end
|
60
|
+
|
metadata
CHANGED
@@ -1,12 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: redis
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
prerelease:
|
5
|
-
|
6
|
-
- 2
|
7
|
-
- 1
|
8
|
-
- 1
|
9
|
-
version: 2.1.1
|
4
|
+
prerelease:
|
5
|
+
version: 2.2.0
|
10
6
|
platform: ruby
|
11
7
|
authors:
|
12
8
|
- Ezra Zygmuntowicz
|
@@ -17,11 +13,12 @@ authors:
|
|
17
13
|
- Luca Guidi
|
18
14
|
- Michel Martens
|
19
15
|
- Damian Janowski
|
16
|
+
- Pieter Noordhuis
|
20
17
|
autorequire: redis
|
21
18
|
bindir: bin
|
22
19
|
cert_chain: []
|
23
20
|
|
24
|
-
date:
|
21
|
+
date: 2011-03-29 00:00:00 -03:00
|
25
22
|
default_executable:
|
26
23
|
dependencies: []
|
27
24
|
|
@@ -31,20 +28,90 @@ executables: []
|
|
31
28
|
|
32
29
|
extensions: []
|
33
30
|
|
34
|
-
extra_rdoc_files:
|
35
|
-
|
31
|
+
extra_rdoc_files: []
|
32
|
+
|
36
33
|
files:
|
34
|
+
- .gitignore
|
35
|
+
- CHANGELOG.md
|
37
36
|
- LICENSE
|
38
|
-
- README.
|
37
|
+
- README.md
|
39
38
|
- Rakefile
|
39
|
+
- benchmarking/logging.rb
|
40
|
+
- benchmarking/pipeline.rb
|
41
|
+
- benchmarking/speed.rb
|
42
|
+
- benchmarking/suite.rb
|
43
|
+
- benchmarking/thread_safety.rb
|
44
|
+
- benchmarking/worker.rb
|
45
|
+
- examples/basic.rb
|
46
|
+
- examples/dist_redis.rb
|
47
|
+
- examples/incr-decr.rb
|
48
|
+
- examples/list.rb
|
49
|
+
- examples/pubsub.rb
|
50
|
+
- examples/sets.rb
|
51
|
+
- examples/unicorn/config.ru
|
52
|
+
- examples/unicorn/unicorn.rb
|
53
|
+
- lib/redis.rb
|
40
54
|
- lib/redis/client.rb
|
41
55
|
- lib/redis/compat.rb
|
42
56
|
- lib/redis/connection.rb
|
57
|
+
- lib/redis/connection/command_helper.rb
|
58
|
+
- lib/redis/connection/hiredis.rb
|
59
|
+
- lib/redis/connection/registry.rb
|
60
|
+
- lib/redis/connection/ruby.rb
|
61
|
+
- lib/redis/connection/synchrony.rb
|
43
62
|
- lib/redis/distributed.rb
|
44
63
|
- lib/redis/hash_ring.rb
|
45
64
|
- lib/redis/pipeline.rb
|
46
65
|
- lib/redis/subscribe.rb
|
47
|
-
- lib/redis.rb
|
66
|
+
- lib/redis/version.rb
|
67
|
+
- redis.gemspec
|
68
|
+
- test/commands_on_hashes_test.rb
|
69
|
+
- test/commands_on_lists_test.rb
|
70
|
+
- test/commands_on_sets_test.rb
|
71
|
+
- test/commands_on_sorted_sets_test.rb
|
72
|
+
- test/commands_on_strings_test.rb
|
73
|
+
- test/commands_on_value_types_test.rb
|
74
|
+
- test/connection_handling_test.rb
|
75
|
+
- test/db/.gitignore
|
76
|
+
- test/distributed_blocking_commands_test.rb
|
77
|
+
- test/distributed_commands_on_hashes_test.rb
|
78
|
+
- test/distributed_commands_on_lists_test.rb
|
79
|
+
- test/distributed_commands_on_sets_test.rb
|
80
|
+
- test/distributed_commands_on_strings_test.rb
|
81
|
+
- test/distributed_commands_on_value_types_test.rb
|
82
|
+
- test/distributed_commands_requiring_clustering_test.rb
|
83
|
+
- test/distributed_connection_handling_test.rb
|
84
|
+
- test/distributed_internals_test.rb
|
85
|
+
- test/distributed_key_tags_test.rb
|
86
|
+
- test/distributed_persistence_control_commands_test.rb
|
87
|
+
- test/distributed_publish_subscribe_test.rb
|
88
|
+
- test/distributed_remote_server_control_commands_test.rb
|
89
|
+
- test/distributed_sorting_test.rb
|
90
|
+
- test/distributed_test.rb
|
91
|
+
- test/distributed_transactions_test.rb
|
92
|
+
- test/encoding_test.rb
|
93
|
+
- test/error_replies_test.rb
|
94
|
+
- test/helper.rb
|
95
|
+
- test/internals_test.rb
|
96
|
+
- test/lint/hashes.rb
|
97
|
+
- test/lint/internals.rb
|
98
|
+
- test/lint/lists.rb
|
99
|
+
- test/lint/sets.rb
|
100
|
+
- test/lint/sorted_sets.rb
|
101
|
+
- test/lint/strings.rb
|
102
|
+
- test/lint/value_types.rb
|
103
|
+
- test/persistence_control_commands_test.rb
|
104
|
+
- test/pipelining_commands_test.rb
|
105
|
+
- test/publish_subscribe_test.rb
|
106
|
+
- test/redis_mock.rb
|
107
|
+
- test/remote_server_control_commands_test.rb
|
108
|
+
- test/sorting_test.rb
|
109
|
+
- test/synchrony_driver.rb
|
110
|
+
- test/test.conf
|
111
|
+
- test/thread_safety_test.rb
|
112
|
+
- test/transactions_test.rb
|
113
|
+
- test/unknown_commands_test.rb
|
114
|
+
- test/url_param_test.rb
|
48
115
|
has_rdoc: true
|
49
116
|
homepage: http://github.com/ezmobius/redis-rb
|
50
117
|
licenses: []
|
@@ -59,23 +126,65 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
59
126
|
requirements:
|
60
127
|
- - ">="
|
61
128
|
- !ruby/object:Gem::Version
|
62
|
-
segments:
|
63
|
-
- 0
|
64
129
|
version: "0"
|
65
130
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
66
131
|
none: false
|
67
132
|
requirements:
|
68
133
|
- - ">="
|
69
134
|
- !ruby/object:Gem::Version
|
70
|
-
segments:
|
71
|
-
- 0
|
72
135
|
version: "0"
|
73
136
|
requirements: []
|
74
137
|
|
75
|
-
rubyforge_project:
|
76
|
-
rubygems_version: 1.
|
138
|
+
rubyforge_project: redis-rb
|
139
|
+
rubygems_version: 1.5.2
|
77
140
|
signing_key:
|
78
141
|
specification_version: 3
|
79
142
|
summary: Ruby client library for Redis, the key value storage server
|
80
|
-
test_files:
|
81
|
-
|
143
|
+
test_files:
|
144
|
+
- test/commands_on_hashes_test.rb
|
145
|
+
- test/commands_on_lists_test.rb
|
146
|
+
- test/commands_on_sets_test.rb
|
147
|
+
- test/commands_on_sorted_sets_test.rb
|
148
|
+
- test/commands_on_strings_test.rb
|
149
|
+
- test/commands_on_value_types_test.rb
|
150
|
+
- test/connection_handling_test.rb
|
151
|
+
- test/db/.gitignore
|
152
|
+
- test/distributed_blocking_commands_test.rb
|
153
|
+
- test/distributed_commands_on_hashes_test.rb
|
154
|
+
- test/distributed_commands_on_lists_test.rb
|
155
|
+
- test/distributed_commands_on_sets_test.rb
|
156
|
+
- test/distributed_commands_on_strings_test.rb
|
157
|
+
- test/distributed_commands_on_value_types_test.rb
|
158
|
+
- test/distributed_commands_requiring_clustering_test.rb
|
159
|
+
- test/distributed_connection_handling_test.rb
|
160
|
+
- test/distributed_internals_test.rb
|
161
|
+
- test/distributed_key_tags_test.rb
|
162
|
+
- test/distributed_persistence_control_commands_test.rb
|
163
|
+
- test/distributed_publish_subscribe_test.rb
|
164
|
+
- test/distributed_remote_server_control_commands_test.rb
|
165
|
+
- test/distributed_sorting_test.rb
|
166
|
+
- test/distributed_test.rb
|
167
|
+
- test/distributed_transactions_test.rb
|
168
|
+
- test/encoding_test.rb
|
169
|
+
- test/error_replies_test.rb
|
170
|
+
- test/helper.rb
|
171
|
+
- test/internals_test.rb
|
172
|
+
- test/lint/hashes.rb
|
173
|
+
- test/lint/internals.rb
|
174
|
+
- test/lint/lists.rb
|
175
|
+
- test/lint/sets.rb
|
176
|
+
- test/lint/sorted_sets.rb
|
177
|
+
- test/lint/strings.rb
|
178
|
+
- test/lint/value_types.rb
|
179
|
+
- test/persistence_control_commands_test.rb
|
180
|
+
- test/pipelining_commands_test.rb
|
181
|
+
- test/publish_subscribe_test.rb
|
182
|
+
- test/redis_mock.rb
|
183
|
+
- test/remote_server_control_commands_test.rb
|
184
|
+
- test/sorting_test.rb
|
185
|
+
- test/synchrony_driver.rb
|
186
|
+
- test/test.conf
|
187
|
+
- test/thread_safety_test.rb
|
188
|
+
- test/transactions_test.rb
|
189
|
+
- test/unknown_commands_test.rb
|
190
|
+
- test/url_param_test.rb
|