redis 1.0.5 → 1.0.6

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.
@@ -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