Class: DistRedis
- Inherits:
-
Object
show all
- Defined in:
- lib/dist_redis.rb
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
#initialize(*servers) ⇒ DistRedis
Returns a new instance of DistRedis.
5
6
7
8
9
10
11
12
|
# File 'lib/dist_redis.rb', line 5
def initialize(*servers)
srvs = []
servers.each do |s|
server, port = s.split(':')
srvs << Redis.new(:host => server, :port => port)
end
@ring = HashRing.new srvs
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(sym, *args, &blk) ⇒ Object
26
27
28
29
30
31
32
|
# File 'lib/dist_redis.rb', line 26
def method_missing(sym, *args, &blk)
if redis = node_for_key(args.first.to_s)
redis.send sym, *args, &blk
else
super
end
end
|
Instance Attribute Details
#ring ⇒ Object
Returns the value of attribute ring.
4
5
6
|
# File 'lib/dist_redis.rb', line 4
def ring
@ring
end
|
Instance Method Details
#add_server(server) ⇒ Object
21
22
23
24
|
# File 'lib/dist_redis.rb', line 21
def add_server(server)
server, port = server.split(':')
@ring.add_node Redis.new(:host => server, :port => port)
end
|
#bgsave ⇒ Object
48
49
50
51
52
|
# File 'lib/dist_redis.rb', line 48
def bgsave
@ring.nodes.each do |red|
red.bgsave
end
end
|
#delete_cloud! ⇒ Object
60
61
62
63
64
65
66
|
# File 'lib/dist_redis.rb', line 60
def delete_cloud!
@ring.nodes.each do |red|
red.keys("*").each do |key|
red.delete key
end
end
end
|
#keys(glob) ⇒ Object
34
35
36
37
38
39
40
|
# File 'lib/dist_redis.rb', line 34
def keys(glob)
keyz = []
@ring.nodes.each do |red|
keyz.concat red.keys(glob)
end
keyz
end
|
#node_for_key(key) ⇒ Object
14
15
16
17
18
19
|
# File 'lib/dist_redis.rb', line 14
def node_for_key(key)
if key =~ /\{(.*)?\}/
key = $1
end
@ring.get_node(key)
end
|
#quit ⇒ Object
54
55
56
57
58
|
# File 'lib/dist_redis.rb', line 54
def quit
@ring.nodes.each do |red|
red.quit
end
end
|
#save ⇒ Object
42
43
44
45
46
|
# File 'lib/dist_redis.rb', line 42
def save
@ring.nodes.each do |red|
red.save
end
end
|