redis 1.0.5 → 1.0.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,11 +1,15 @@
1
1
  require 'socket'
2
2
 
3
3
  class Redis
4
- VERSION = "1.0.5"
4
+ VERSION = "1.0.6"
5
5
 
6
6
  def self.new(*attrs)
7
7
  Client.new(*attrs)
8
8
  end
9
+
10
+ def self.deprecate(message, trace = caller[0])
11
+ $stderr.puts "\n#{message} (in #{trace})"
12
+ end
9
13
  end
10
14
 
11
15
  begin
@@ -63,10 +63,16 @@ class Redis
63
63
  "hset" => BOOLEAN_PROCESSOR,
64
64
  "hexists" => BOOLEAN_PROCESSOR,
65
65
  "info" => lambda{|r|
66
- info = {}
66
+ info = Hash.new do |hash, key|
67
+ if hash.include?(key.to_s)
68
+ Redis.deprecate "Redis#info will return a hash of string keys, not symbols", caller[2]
69
+ hash[key.to_s]
70
+ end
71
+ end
72
+
67
73
  r.each_line {|kv|
68
74
  k,v = kv.split(":",2).map{|x| x.chomp}
69
- info[k.to_sym] = v
75
+ info[k] = v
70
76
  }
71
77
  info
72
78
  },
@@ -266,6 +272,7 @@ class Redis
266
272
  end
267
273
 
268
274
  def pipelined(&block)
275
+ Redis.deprecate("Calling pipelined commands on the yielded object will be deprecated in 2.0", caller[0])
269
276
  pipeline = Pipeline.new self
270
277
  yield pipeline
271
278
  pipeline.execute
@@ -496,8 +503,10 @@ class Redis
496
503
  @logger.send(level, str.to_s) if @logger
497
504
  end
498
505
 
499
- def deprecated(old, new, trace = caller[0])
500
- $stderr.puts "\nRedis: The method #{old} is deprecated. Use #{new} instead (in #{trace})"
506
+ def deprecated(old, new = nil, trace = caller[0])
507
+ message = "The method #{old} is deprecated and will be removed in 2.0"
508
+ message << " - use #{new} instead" if new
509
+ Redis.deprecate(message, trace)
501
510
  end
502
511
 
503
512
  def requires_timeout_reset?(command)
@@ -1,115 +1,13 @@
1
- require 'redis/hash_ring'
1
+ Redis.deprecate %q{"redis/dist_redis" is deprecated. Require "redis/distributed" and replace DistRedis for Redis::Distributed.}, caller[0]
2
2
 
3
- class Redis
4
- class DistRedis
5
- attr_reader :ring
6
- def initialize(opts={})
7
- hosts = []
8
-
9
- db = opts[:db] || nil
10
- timeout = opts[:timeout] || nil
11
-
12
- raise "No hosts given" unless opts[:hosts]
13
-
14
- opts[:hosts].each do |h|
15
- host, port = h.split(':')
16
- hosts << Client.new(:host => host, :port => port, :db => db, :timeout => timeout)
17
- end
18
-
19
- @ring = HashRing.new hosts
20
- end
21
-
22
- def node_for_key(key)
23
- key = $1 if key =~ /\{(.*)?\}/
24
- @ring.get_node(key)
25
- end
26
-
27
- def add_server(server)
28
- server, port = server.split(':')
29
- @ring.add_node Client.new(:host => server, :port => port)
30
- end
31
-
32
- def method_missing(sym, *args, &blk)
33
- if redis = node_for_key(args.first.to_s)
34
- redis.send sym, *args, &blk
35
- else
36
- super
37
- end
38
- end
39
-
40
- def node_keys(glob)
41
- @ring.nodes.map do |red|
42
- red.keys(glob)
43
- end
44
- end
45
-
46
- def keys(glob)
47
- node_keys(glob).flatten
48
- end
49
-
50
- def save
51
- on_each_node :save
52
- end
53
-
54
- def bgsave
55
- on_each_node :bgsave
56
- end
57
-
58
- def quit
59
- on_each_node :quit
60
- end
61
-
62
- def flush_all
63
- on_each_node :flush_all
64
- end
65
- alias_method :flushall, :flush_all
3
+ require "redis/hash_ring"
4
+ require "redis/distributed"
66
5
 
67
- def flush_db
68
- on_each_node :flush_db
69
- end
70
- alias_method :flushdb, :flush_db
71
-
72
- def delete_cloud!
73
- @ring.nodes.each do |red|
74
- red.keys("*").each do |key|
75
- red.del key
76
- end
77
- end
78
- end
79
-
80
- def on_each_node(command, *args)
81
- @ring.nodes.each do |red|
82
- red.send(command, *args)
83
- end
84
- end
85
-
86
- def mset()
87
-
88
- end
89
-
90
- def mget(*keyz)
91
- results = {}
92
- kbn = keys_by_node(keyz)
93
- kbn.each do |node, node_keyz|
94
- node.mapped_mget(*node_keyz).each do |k, v|
95
- results[k] = v
96
- end
97
- end
98
- keyz.flatten.map { |k| results[k] }
99
- end
100
-
101
- def keys_by_node(*keyz)
102
- keyz.flatten.inject({}) do |kbn, k|
103
- node = node_for_key(k)
104
- next if kbn[node] && kbn[node].include?(k)
105
- kbn[node] ||= []
106
- kbn[node] << k
107
- kbn
108
- end
109
- end
110
-
111
- def type(key)
112
- method_missing(:type, key)
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)
113
11
  end
114
12
  end
115
13
  end
@@ -0,0 +1,115 @@
1
+ require 'redis/hash_ring'
2
+
3
+ class Redis
4
+ class Distributed
5
+ attr_reader :ring
6
+ def initialize(opts={})
7
+ hosts = []
8
+
9
+ db = opts[:db] || nil
10
+ timeout = opts[:timeout] || nil
11
+
12
+ raise "No hosts given" unless opts[:hosts]
13
+
14
+ opts[:hosts].each do |h|
15
+ host, port = h.split(':')
16
+ hosts << Client.new(:host => host, :port => port, :db => db, :timeout => timeout)
17
+ end
18
+
19
+ @ring = HashRing.new hosts
20
+ end
21
+
22
+ def node_for_key(key)
23
+ key = $1 if key =~ /\{(.*)?\}/
24
+ @ring.get_node(key)
25
+ end
26
+
27
+ def add_server(server)
28
+ server, port = server.split(':')
29
+ @ring.add_node Client.new(:host => server, :port => port)
30
+ end
31
+
32
+ def method_missing(sym, *args, &blk)
33
+ if redis = node_for_key(args.first.to_s)
34
+ redis.send sym, *args, &blk
35
+ else
36
+ super
37
+ end
38
+ end
39
+
40
+ def node_keys(glob)
41
+ @ring.nodes.map do |red|
42
+ red.keys(glob)
43
+ end
44
+ end
45
+
46
+ def keys(glob)
47
+ node_keys(glob).flatten
48
+ end
49
+
50
+ def save
51
+ on_each_node :save
52
+ end
53
+
54
+ def bgsave
55
+ on_each_node :bgsave
56
+ end
57
+
58
+ def quit
59
+ on_each_node :quit
60
+ end
61
+
62
+ def flush_all
63
+ on_each_node :flush_all
64
+ end
65
+ alias_method :flushall, :flush_all
66
+
67
+ def flush_db
68
+ on_each_node :flush_db
69
+ end
70
+ alias_method :flushdb, :flush_db
71
+
72
+ def delete_cloud!
73
+ @ring.nodes.each do |red|
74
+ red.keys("*").each do |key|
75
+ red.del key
76
+ end
77
+ end
78
+ end
79
+
80
+ def on_each_node(command, *args)
81
+ @ring.nodes.each do |red|
82
+ red.send(command, *args)
83
+ end
84
+ end
85
+
86
+ def mset()
87
+
88
+ end
89
+
90
+ def mget(*keyz)
91
+ results = {}
92
+ kbn = keys_by_node(keyz)
93
+ kbn.each do |node, node_keyz|
94
+ node.mapped_mget(*node_keyz).each do |k, v|
95
+ results[k] = v
96
+ end
97
+ end
98
+ keyz.flatten.map { |k| results[k] }
99
+ end
100
+
101
+ def keys_by_node(*keyz)
102
+ keyz.flatten.inject({}) do |kbn, k|
103
+ node = node_for_key(k)
104
+ next if kbn[node] && kbn[node].include?(k)
105
+ kbn[node] ||= []
106
+ kbn[node] << k
107
+ kbn
108
+ end
109
+ end
110
+
111
+ def type(key)
112
+ method_missing(:type, key)
113
+ end
114
+ end
115
+ end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 1
7
7
  - 0
8
- - 5
9
- version: 1.0.5
8
+ - 6
9
+ version: 1.0.6
10
10
  platform: ruby
11
11
  authors:
12
12
  - Ezra Zygmuntowicz
@@ -19,7 +19,7 @@ autorequire: redis
19
19
  bindir: bin
20
20
  cert_chain: []
21
21
 
22
- date: 2010-04-21 00:00:00 -03:00
22
+ date: 2010-04-26 00:00:00 -03:00
23
23
  default_executable:
24
24
  dependencies: []
25
25
 
@@ -38,6 +38,7 @@ files:
38
38
  - lib/edis.rb
39
39
  - lib/redis/client.rb
40
40
  - lib/redis/dist_redis.rb
41
+ - lib/redis/distributed.rb
41
42
  - lib/redis/hash_ring.rb
42
43
  - lib/redis/pipeline.rb
43
44
  - lib/redis/raketasks.rb