redis_buddy 0.1.9 → 0.2.0
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/lib/redis/distributed_json_redis.rb +14 -0
- data/lib/redis/distributed_marshaled_redis.rb +2 -11
- data/lib/redis/json_redis.rb +29 -0
- data/lib/redis/marshaled_redis.rb +2 -34
- data/lib/redis/redis_factory.rb +1 -1
- data/lib/redis_buddy/cache_store.rb +24 -31
- data/lib/redis_buddy.rb +2 -0
- metadata +30 -11
@@ -0,0 +1,14 @@
|
|
1
|
+
class DistributedJsonRedis < Redis::Distributed
|
2
|
+
|
3
|
+
# backwards compat
|
4
|
+
def self.inherited(child)
|
5
|
+
ActiveSupport::Deprecation.warn("#{child.to_s} is deprecated. Use DistributedJsonRedis instead.") if defined?(ActiveSupport::Deprecation)
|
6
|
+
end
|
7
|
+
|
8
|
+
def initialize(addresses)
|
9
|
+
nodes = addresses.map do |address|
|
10
|
+
JsonRedis.new(address)
|
11
|
+
end
|
12
|
+
@ring = Redis::HashRing.new(nodes)
|
13
|
+
end
|
14
|
+
end
|
@@ -1,13 +1,4 @@
|
|
1
|
-
#
|
2
|
-
|
3
|
-
class DistributedMarshaledRedis < Redis::Distributed
|
4
|
-
def initialize(addresses)
|
5
|
-
nodes = addresses.map do |address|
|
6
|
-
MarshaledRedis.new address
|
7
|
-
end
|
8
|
-
@ring = Redis::HashRing.new nodes
|
9
|
-
end
|
10
|
-
|
11
|
-
alias_method :flush_db, :delete_cloud!
|
1
|
+
# backwards compat
|
2
|
+
class DistributedMarshaledRedis < DistributedJsonRedis
|
12
3
|
end
|
13
4
|
|
@@ -0,0 +1,29 @@
|
|
1
|
+
class JsonRedis < Redis
|
2
|
+
|
3
|
+
# backwards compat
|
4
|
+
def self.inherited(child)
|
5
|
+
ActiveSupport::Deprecation.warn("#{child.to_s} is deprecated. Use JsonRedis instead.") if defined?(ActiveSupport::Deprecation)
|
6
|
+
end
|
7
|
+
|
8
|
+
def set(key, value)
|
9
|
+
value = Yajl.dump(value) if encode?(value)
|
10
|
+
super(key, value)
|
11
|
+
end
|
12
|
+
|
13
|
+
def setex(key, value, expires)
|
14
|
+
value = Yajl.dump(value) if encode?(value)
|
15
|
+
super(key, value, expires)
|
16
|
+
end
|
17
|
+
|
18
|
+
def get(key)
|
19
|
+
result = @client.call(:get, key)
|
20
|
+
result = Yajl.load(result) if result
|
21
|
+
result
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
def encode?(value)
|
26
|
+
!value.is_a?(Integer)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
@@ -1,36 +1,4 @@
|
|
1
|
-
#
|
2
|
-
|
3
|
-
class MarshaledRedis < Redis
|
4
|
-
def set(key, val, options = nil)
|
5
|
-
val = Marshal.dump val unless raw?(options)
|
6
|
-
super key, val, expires_in(options)
|
7
|
-
end
|
8
|
-
|
9
|
-
def set_unless_exists(key, val, options = nil)
|
10
|
-
val = Marshal.dump val unless raw?(options)
|
11
|
-
super key, val
|
12
|
-
end
|
13
|
-
|
14
|
-
def get(key, options = nil)
|
15
|
-
result = call_command([:get, key])
|
16
|
-
result = Marshal.load result if unmarshal?(result, options)
|
17
|
-
result
|
18
|
-
end
|
19
|
-
|
20
|
-
private
|
21
|
-
def unmarshal?(result, options)
|
22
|
-
result && result.size > 0 && !raw?(options)
|
23
|
-
end
|
24
|
-
|
25
|
-
def raw?(options)
|
26
|
-
options && options[:raw]
|
27
|
-
end
|
28
|
-
|
29
|
-
def expires_in(options)
|
30
|
-
if options
|
31
|
-
# Rack::Session Merb Rails/Sinatra
|
32
|
-
options[:expire_after] || options[:expires_in] || options[:expire_in]
|
33
|
-
end
|
34
|
-
end
|
1
|
+
# backwards compat
|
2
|
+
class MarshaledRedis < JsonRedis
|
35
3
|
end
|
36
4
|
|
data/lib/redis/redis_factory.rb
CHANGED
@@ -8,54 +8,47 @@ module ActiveSupport
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def write(key, value, options = nil)
|
11
|
-
|
12
|
-
method = options && options[:unless_exist] ? :set_unless_exists : :set
|
11
|
+
method = options && options[:unless_exist] ? :set_unless_exists : :set
|
13
12
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
13
|
+
if options && options[:expire]
|
14
|
+
if (info.is_a?(Array) ? info.first['redis_version'] : info['redis_version']) <= '1.2.6'
|
15
|
+
@data.send(:set, key, value)
|
16
|
+
@data.send(:expire, key, options[:expire])
|
17
|
+
else
|
18
|
+
@data.send(:setex, key, value,options[:expire])
|
19
|
+
end
|
20
|
+
else
|
21
|
+
@data.send(method, key, value)
|
23
22
|
end
|
24
23
|
end
|
25
24
|
|
26
|
-
def read(key
|
27
|
-
|
28
|
-
@data.get key
|
29
|
-
end
|
25
|
+
def read(key)
|
26
|
+
@data.get(key)
|
30
27
|
end
|
31
28
|
|
32
|
-
def ttl(key
|
33
|
-
@data.ttl
|
29
|
+
def ttl(key)
|
30
|
+
@data.ttl(key)
|
34
31
|
end
|
35
32
|
|
36
|
-
def delete(key
|
37
|
-
|
38
|
-
@data.del key
|
39
|
-
end
|
33
|
+
def delete(key)
|
34
|
+
@data.del(key)
|
40
35
|
end
|
41
36
|
|
42
|
-
def exist?(key
|
43
|
-
|
44
|
-
@data.exists key
|
45
|
-
end
|
37
|
+
def exist?(key)
|
38
|
+
@data.exists(key)
|
46
39
|
end
|
47
40
|
|
48
|
-
def increment(key, amount =
|
49
|
-
@data.incr key, amount
|
41
|
+
def increment(key, amount = nil)
|
42
|
+
amount.nil? ? @data.incr(key) : @data.incrby(key, amount)
|
50
43
|
end
|
51
44
|
|
52
|
-
def decrement(key, amount =
|
53
|
-
@data.decr key, amount
|
45
|
+
def decrement(key, amount = nil)
|
46
|
+
amount.nil? ? @data.decr(key) : @data.decrby(key, amount)
|
54
47
|
end
|
55
48
|
|
56
|
-
def delete_matched(matcher
|
49
|
+
def delete_matched(matcher)
|
57
50
|
super do
|
58
|
-
@data.keys(matcher).each { |key| @data.
|
51
|
+
@data.keys(matcher).each { |key| @data.del(key) }
|
59
52
|
end
|
60
53
|
end
|
61
54
|
|
data/lib/redis_buddy.rb
CHANGED
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
-
-
|
8
|
-
-
|
9
|
-
version: 0.
|
7
|
+
- 2
|
8
|
+
- 0
|
9
|
+
version: 0.2.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Ole Riesenberg
|
@@ -14,37 +14,52 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-
|
17
|
+
date: 2010-09-24 00:00:00 +02:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: redis
|
22
22
|
prerelease: false
|
23
23
|
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
24
25
|
requirements:
|
25
26
|
- - ~>
|
26
27
|
- !ruby/object:Gem::Version
|
27
28
|
segments:
|
28
|
-
-
|
29
|
+
- 2
|
29
30
|
- 0
|
30
|
-
-
|
31
|
-
version:
|
31
|
+
- 6
|
32
|
+
version: 2.0.6
|
32
33
|
type: :runtime
|
33
34
|
version_requirements: *id001
|
34
35
|
- !ruby/object:Gem::Dependency
|
35
36
|
name: redis-namespace
|
36
37
|
prerelease: false
|
37
38
|
requirement: &id002 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
38
40
|
requirements:
|
39
41
|
- - ~>
|
40
42
|
- !ruby/object:Gem::Version
|
41
43
|
segments:
|
42
44
|
- 0
|
43
|
-
-
|
44
|
-
-
|
45
|
-
version: 0.
|
45
|
+
- 10
|
46
|
+
- 0
|
47
|
+
version: 0.10.0
|
46
48
|
type: :runtime
|
47
49
|
version_requirements: *id002
|
50
|
+
- !ruby/object:Gem::Dependency
|
51
|
+
name: yajl-ruby
|
52
|
+
prerelease: false
|
53
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
54
|
+
none: false
|
55
|
+
requirements:
|
56
|
+
- - ">="
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
segments:
|
59
|
+
- 0
|
60
|
+
version: "0"
|
61
|
+
type: :runtime
|
62
|
+
version_requirements: *id003
|
48
63
|
description: A namespaced Redis Cache Store for Rails 3, based on redis-store
|
49
64
|
email: labs@buddybrand.de
|
50
65
|
executables: []
|
@@ -54,7 +69,9 @@ extensions: []
|
|
54
69
|
extra_rdoc_files:
|
55
70
|
- README.md
|
56
71
|
files:
|
72
|
+
- lib/redis/distributed_json_redis.rb
|
57
73
|
- lib/redis/distributed_marshaled_redis.rb
|
74
|
+
- lib/redis/json_redis.rb
|
58
75
|
- lib/redis/marshaled_redis.rb
|
59
76
|
- lib/redis/redis_factory.rb
|
60
77
|
- lib/redis_buddy.rb
|
@@ -70,6 +87,7 @@ rdoc_options:
|
|
70
87
|
require_paths:
|
71
88
|
- lib
|
72
89
|
required_ruby_version: !ruby/object:Gem::Requirement
|
90
|
+
none: false
|
73
91
|
requirements:
|
74
92
|
- - ">="
|
75
93
|
- !ruby/object:Gem::Version
|
@@ -77,6 +95,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
77
95
|
- 0
|
78
96
|
version: "0"
|
79
97
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
98
|
+
none: false
|
80
99
|
requirements:
|
81
100
|
- - ">="
|
82
101
|
- !ruby/object:Gem::Version
|
@@ -86,7 +105,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
86
105
|
requirements: []
|
87
106
|
|
88
107
|
rubyforge_project:
|
89
|
-
rubygems_version: 1.3.
|
108
|
+
rubygems_version: 1.3.7
|
90
109
|
signing_key:
|
91
110
|
specification_version: 3
|
92
111
|
summary: A namespaced Redis Cache Store for Rails 3
|