redis 1.0.7 → 2.0.0.rc1
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.
- data/README.markdown +8 -0
- data/lib/redis.rb +467 -3
- data/lib/redis/client.rb +145 -464
- data/lib/redis/distributed.rb +388 -67
- data/lib/redis/pipeline.rb +5 -11
- data/lib/redis/subscribe.rb +83 -10
- metadata +11 -9
- data/lib/redis/dist_redis.rb +0 -16
data/lib/redis/pipeline.rb
CHANGED
@@ -1,19 +1,13 @@
|
|
1
1
|
class Redis
|
2
|
-
class Pipeline
|
3
|
-
|
2
|
+
class Pipeline
|
3
|
+
attr :commands
|
4
4
|
|
5
|
-
def initialize
|
6
|
-
@redis = redis
|
5
|
+
def initialize
|
7
6
|
@commands = []
|
8
7
|
end
|
9
8
|
|
10
|
-
def
|
11
|
-
@commands <<
|
12
|
-
end
|
13
|
-
|
14
|
-
def execute
|
15
|
-
return if @commands.empty?
|
16
|
-
@redis.call_command(@commands)
|
9
|
+
def call(*args)
|
10
|
+
@commands << args
|
17
11
|
end
|
18
12
|
end
|
19
13
|
end
|
data/lib/redis/subscribe.rb
CHANGED
@@ -1,16 +1,89 @@
|
|
1
1
|
class Redis
|
2
|
-
class
|
2
|
+
class SubscribedClient
|
3
|
+
def initialize(client)
|
4
|
+
@client = client
|
5
|
+
end
|
6
|
+
|
7
|
+
def call(command, *args)
|
8
|
+
@client.call_async(command, *args)
|
9
|
+
end
|
10
|
+
|
11
|
+
def subscribe(*channels, &block)
|
12
|
+
@client.call_async(:subscribe, *channels)
|
13
|
+
|
14
|
+
sub = Subscription.new(&block)
|
15
|
+
|
16
|
+
begin
|
17
|
+
loop do
|
18
|
+
type, channel, message = @client.read
|
19
|
+
sub.callbacks[type].call(channel, message)
|
20
|
+
break if type == "unsubscribe" && message == 0
|
21
|
+
end
|
22
|
+
ensure
|
23
|
+
@client.call_async(:unsubscribe)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def unsubscribe(*channels)
|
28
|
+
@client.call_async(:unsubscribe, *channels)
|
29
|
+
@client
|
30
|
+
end
|
31
|
+
|
32
|
+
def psubscribe(*channels, &block)
|
33
|
+
@client.call_async(:psubscribe, *channels)
|
34
|
+
|
35
|
+
sub = Subscription.new(&block)
|
36
|
+
|
37
|
+
begin
|
38
|
+
loop do
|
39
|
+
type, pattern, channel, message = @client.read
|
40
|
+
sub.callbacks[type].call(pattern, channel, message)
|
41
|
+
break if type == "punsubscribe" && channel == 0
|
42
|
+
end
|
43
|
+
ensure
|
44
|
+
@client.call_async(:punsubscribe)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def punsubscribe(*channels)
|
49
|
+
@client.call_async(:punsubscribe, *channels)
|
50
|
+
@client
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
class Subscription
|
55
|
+
attr :callbacks
|
56
|
+
|
57
|
+
def initialize
|
58
|
+
@callbacks = Hash.new do |hash, key|
|
59
|
+
hash[key] = lambda { |*_| }
|
60
|
+
end
|
61
|
+
|
62
|
+
yield(self)
|
63
|
+
end
|
64
|
+
|
3
65
|
def subscribe(&block)
|
4
|
-
|
66
|
+
@callbacks["subscribe"] = block
|
67
|
+
end
|
68
|
+
|
69
|
+
def unsubscribe(&block)
|
70
|
+
@callbacks["unsubscribe"] = block
|
71
|
+
end
|
72
|
+
|
73
|
+
def message(&block)
|
74
|
+
@callbacks["message"] = block
|
75
|
+
end
|
76
|
+
|
77
|
+
def psubscribe(&block)
|
78
|
+
@callbacks["psubscribe"] = block
|
5
79
|
end
|
6
|
-
|
7
|
-
def
|
8
|
-
|
80
|
+
|
81
|
+
def punsubscribe(&block)
|
82
|
+
@callbacks["punsubscribe"] = block
|
9
83
|
end
|
10
|
-
|
11
|
-
def
|
12
|
-
|
84
|
+
|
85
|
+
def pmessage(&block)
|
86
|
+
@callbacks["pmessage"] = block
|
13
87
|
end
|
14
|
-
|
15
88
|
end
|
16
|
-
end
|
89
|
+
end
|
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: redis
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
prerelease:
|
4
|
+
prerelease: true
|
5
5
|
segments:
|
6
|
-
-
|
6
|
+
- 2
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
|
8
|
+
- 0
|
9
|
+
- rc1
|
10
|
+
version: 2.0.0.rc1
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- Ezra Zygmuntowicz
|
@@ -19,7 +20,7 @@ autorequire: redis
|
|
19
20
|
bindir: bin
|
20
21
|
cert_chain: []
|
21
22
|
|
22
|
-
date: 2010-04-
|
23
|
+
date: 2010-04-26 00:00:00 -03:00
|
23
24
|
default_executable:
|
24
25
|
dependencies: []
|
25
26
|
|
@@ -37,7 +38,6 @@ files:
|
|
37
38
|
- Rakefile
|
38
39
|
- lib/edis.rb
|
39
40
|
- lib/redis/client.rb
|
40
|
-
- lib/redis/dist_redis.rb
|
41
41
|
- lib/redis/distributed.rb
|
42
42
|
- lib/redis/hash_ring.rb
|
43
43
|
- lib/redis/pipeline.rb
|
@@ -63,11 +63,13 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
63
63
|
version: "0"
|
64
64
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - ">"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
segments:
|
69
|
-
-
|
70
|
-
|
69
|
+
- 1
|
70
|
+
- 3
|
71
|
+
- 1
|
72
|
+
version: 1.3.1
|
71
73
|
requirements: []
|
72
74
|
|
73
75
|
rubyforge_project:
|
data/lib/redis/dist_redis.rb
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
Redis.deprecate %q{"redis/dist_redis" is deprecated. Require "redis/distributed" and replace DistRedis for Redis::Distributed.}, caller[0]
|
2
|
-
|
3
|
-
require "redis/hash_ring"
|
4
|
-
require "redis/distributed"
|
5
|
-
|
6
|
-
class Redis
|
7
|
-
class DistRedis < Redis::Distributed
|
8
|
-
def initialize(*args)
|
9
|
-
Redis.deprecate "DistRedis is deprecated in favor of Redis::Distributed.", caller[1]
|
10
|
-
super(*args)
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
# For backwards compatibility
|
16
|
-
DistRedis = Redis::DistRedis
|