cache 0.2.6 → 0.2.7
Sign up to get free protection for your applications and to get access to all the features.
- data/cache.gemspec +1 -2
- data/lib/cache.rb +3 -4
- data/lib/cache/storage.rb +4 -4
- data/lib/cache/version.rb +1 -1
- data/test/profile/benchmark.rb +30 -10
- metadata +76 -25
data/cache.gemspec
CHANGED
@@ -26,8 +26,7 @@ Gem::Specification.new do |s|
|
|
26
26
|
s.add_development_dependency 'redis'
|
27
27
|
s.add_development_dependency 'redis-namespace'
|
28
28
|
s.add_development_dependency 'dalli'
|
29
|
-
|
30
|
-
s.add_development_dependency 'memcached', '<=1.2.6'
|
29
|
+
s.add_development_dependency 'memcached'
|
31
30
|
s.add_development_dependency 'memcache-client'
|
32
31
|
s.add_development_dependency 'rake'
|
33
32
|
end
|
data/lib/cache.rb
CHANGED
@@ -1,8 +1,7 @@
|
|
1
|
-
require 'cache/
|
2
|
-
|
3
|
-
autoload :Config, 'cache/config'
|
4
|
-
autoload :Storage, 'cache/storage'
|
1
|
+
require 'cache/config'
|
2
|
+
require 'cache/storage'
|
5
3
|
|
4
|
+
class Cache
|
6
5
|
# Create a new Cache instance by wrapping a client of your choice.
|
7
6
|
#
|
8
7
|
# Defaults to an in-process memory store.
|
data/lib/cache/storage.rb
CHANGED
@@ -19,7 +19,7 @@ class Cache
|
|
19
19
|
if cached_v = bare.get(k) and cached_v.is_a?(::String)
|
20
20
|
::Marshal.load cached_v
|
21
21
|
end
|
22
|
-
elsif active_support_store?
|
22
|
+
elsif active_support_store? or dalli_store?
|
23
23
|
bare.read k
|
24
24
|
else
|
25
25
|
raise "Don't know how to GET with #{bare.inspect}"
|
@@ -32,7 +32,7 @@ class Cache
|
|
32
32
|
bare.get ks
|
33
33
|
elsif memcached_rails? or dalli? or mem_cache?
|
34
34
|
bare.get_multi ks
|
35
|
-
elsif active_support_store?
|
35
|
+
elsif active_support_store? or dalli_store?
|
36
36
|
bare.read_multi *ks
|
37
37
|
else
|
38
38
|
ks.inject({}) do |memo, k|
|
@@ -52,7 +52,7 @@ class Cache
|
|
52
52
|
else
|
53
53
|
bare.setex k, ttl, ::Marshal.dump(v)
|
54
54
|
end
|
55
|
-
elsif active_support_store?
|
55
|
+
elsif active_support_store? or dalli_store?
|
56
56
|
if ttl == 0
|
57
57
|
bare.write k, v # never expire
|
58
58
|
else
|
@@ -69,7 +69,7 @@ class Cache
|
|
69
69
|
begin; bare.delete(k); rescue ::Memcached::NotFound; nil; end
|
70
70
|
elsif redis?
|
71
71
|
bare.del k
|
72
|
-
elsif dalli? or memcached_rails? or mem_cache? or active_support_store?
|
72
|
+
elsif dalli? or memcached_rails? or mem_cache? or active_support_store? or dalli_store?
|
73
73
|
bare.delete k
|
74
74
|
else
|
75
75
|
raise "Don't know how to DELETE with #{bare.inspect}"
|
data/lib/cache/version.rb
CHANGED
data/test/profile/benchmark.rb
CHANGED
@@ -15,7 +15,7 @@ puts `env | egrep '^RUBY'`
|
|
15
15
|
puts "Ruby #{RUBY_VERSION}p#{RUBY_PATCHLEVEL}"
|
16
16
|
|
17
17
|
[ ["memcached", "memcached"],
|
18
|
-
["remix-stash", "remix/stash"],
|
18
|
+
# ["remix-stash", "remix/stash"],
|
19
19
|
# ["astro-remcached", "remcached"], # Clobbers the "Memcached" constant
|
20
20
|
["memcache-client", "memcache"],
|
21
21
|
["cache", "cache"],
|
@@ -26,12 +26,10 @@ puts "Ruby #{RUBY_VERSION}p#{RUBY_PATCHLEVEL}"
|
|
26
26
|
puts "Loaded #{gem_name} #{Gem.loaded_specs[gem_name].version.to_s rescue nil}"
|
27
27
|
end
|
28
28
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
@@clusters = {:default => Remix::Stash::Cluster.new(['127.0.0.1:43042', '127.0.0.1:43043'])}
|
34
|
-
end
|
29
|
+
# class Remix::Stash
|
30
|
+
# # Remix::Stash API doesn't let you set servers
|
31
|
+
# @@clusters = {:default => Remix::Stash::Cluster.new(['127.0.0.1:43042', '127.0.0.1:43043'])}
|
32
|
+
# end
|
35
33
|
|
36
34
|
class Dalli::ClientCompat < Dalli::Client
|
37
35
|
def set(*args)
|
@@ -102,8 +100,30 @@ class Bench
|
|
102
100
|
private
|
103
101
|
|
104
102
|
def reset_servers
|
105
|
-
|
106
|
-
|
103
|
+
# Kill memcached
|
104
|
+
system("killall -9 memcached")
|
105
|
+
|
106
|
+
# Start memcached
|
107
|
+
verbosity = (ENV['DEBUG'] ? "-vv" : "")
|
108
|
+
log = "/tmp/memcached.log"
|
109
|
+
memcached = ENV['MEMCACHED_COMMAND'] || 'memcached'
|
110
|
+
system ">#{log}"
|
111
|
+
|
112
|
+
# TCP memcached
|
113
|
+
(43042..43046).each do |port|
|
114
|
+
cmd = "#{memcached} #{verbosity} -U 0 -p #{port} >> #{log} 2>&1 &"
|
115
|
+
raise "'#{cmd}' failed to start" unless system(cmd)
|
116
|
+
end
|
117
|
+
# UDP memcached
|
118
|
+
(43052..43053).each do |port|
|
119
|
+
cmd = "#{memcached} #{verbosity} -U #{port} -p 0 >> #{log} 2>&1 &"
|
120
|
+
raise "'#{cmd}' failed to start" unless system(cmd)
|
121
|
+
end
|
122
|
+
# Domain socket memcached
|
123
|
+
(0..1).each do |i|
|
124
|
+
cmd = "#{memcached} -M -s #{UNIX_SOCKET_NAME}#{i} #{verbosity} >> #{log} 2>&1 &"
|
125
|
+
raise "'#{cmd}' failed to start" unless system(cmd)
|
126
|
+
end
|
107
127
|
end
|
108
128
|
|
109
129
|
def reset_clients
|
@@ -126,7 +146,7 @@ class Bench
|
|
126
146
|
['127.0.0.1:43042', '127.0.0.1:43043'],
|
127
147
|
:no_block => true, :buffer_requests => true, :namespace => "namespace", :binary_protocol => true),
|
128
148
|
"mclient:ascii" => MemCache.new(['127.0.0.1:43042', '127.0.0.1:43043']),
|
129
|
-
"stash:bin" => Remix::Stash.new(:root),
|
149
|
+
# "stash:bin" => Remix::Stash.new(:root),
|
130
150
|
"dalli:bin" => Dalli::ClientCompat.new(['127.0.0.1:43042', '127.0.0.1:43043'], :marshal => false, :threadsafe => false)}
|
131
151
|
end
|
132
152
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cache
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.7
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,11 +10,11 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2012-04-03 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activesupport
|
17
|
-
requirement:
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ! '>='
|
@@ -22,10 +22,15 @@ dependencies:
|
|
22
22
|
version: 2.3.11
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements:
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
|
+
requirements:
|
28
|
+
- - ! '>='
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
version: 2.3.11
|
26
31
|
- !ruby/object:Gem::Dependency
|
27
32
|
name: i18n
|
28
|
-
requirement:
|
33
|
+
requirement: !ruby/object:Gem::Requirement
|
29
34
|
none: false
|
30
35
|
requirements:
|
31
36
|
- - ! '>='
|
@@ -33,10 +38,15 @@ dependencies:
|
|
33
38
|
version: '0'
|
34
39
|
type: :runtime
|
35
40
|
prerelease: false
|
36
|
-
version_requirements:
|
41
|
+
version_requirements: !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
43
|
+
requirements:
|
44
|
+
- - ! '>='
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0'
|
37
47
|
- !ruby/object:Gem::Dependency
|
38
48
|
name: yard
|
39
|
-
requirement:
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
40
50
|
none: false
|
41
51
|
requirements:
|
42
52
|
- - ! '>='
|
@@ -44,10 +54,15 @@ dependencies:
|
|
44
54
|
version: '0'
|
45
55
|
type: :development
|
46
56
|
prerelease: false
|
47
|
-
version_requirements:
|
57
|
+
version_requirements: !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
59
|
+
requirements:
|
60
|
+
- - ! '>='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
48
63
|
- !ruby/object:Gem::Dependency
|
49
64
|
name: test-unit
|
50
|
-
requirement:
|
65
|
+
requirement: !ruby/object:Gem::Requirement
|
51
66
|
none: false
|
52
67
|
requirements:
|
53
68
|
- - ! '>='
|
@@ -55,10 +70,15 @@ dependencies:
|
|
55
70
|
version: '0'
|
56
71
|
type: :development
|
57
72
|
prerelease: false
|
58
|
-
version_requirements:
|
73
|
+
version_requirements: !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
75
|
+
requirements:
|
76
|
+
- - ! '>='
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: '0'
|
59
79
|
- !ruby/object:Gem::Dependency
|
60
80
|
name: redis
|
61
|
-
requirement:
|
81
|
+
requirement: !ruby/object:Gem::Requirement
|
62
82
|
none: false
|
63
83
|
requirements:
|
64
84
|
- - ! '>='
|
@@ -66,10 +86,15 @@ dependencies:
|
|
66
86
|
version: '0'
|
67
87
|
type: :development
|
68
88
|
prerelease: false
|
69
|
-
version_requirements:
|
89
|
+
version_requirements: !ruby/object:Gem::Requirement
|
90
|
+
none: false
|
91
|
+
requirements:
|
92
|
+
- - ! '>='
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '0'
|
70
95
|
- !ruby/object:Gem::Dependency
|
71
96
|
name: redis-namespace
|
72
|
-
requirement:
|
97
|
+
requirement: !ruby/object:Gem::Requirement
|
73
98
|
none: false
|
74
99
|
requirements:
|
75
100
|
- - ! '>='
|
@@ -77,10 +102,15 @@ dependencies:
|
|
77
102
|
version: '0'
|
78
103
|
type: :development
|
79
104
|
prerelease: false
|
80
|
-
version_requirements:
|
105
|
+
version_requirements: !ruby/object:Gem::Requirement
|
106
|
+
none: false
|
107
|
+
requirements:
|
108
|
+
- - ! '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
81
111
|
- !ruby/object:Gem::Dependency
|
82
112
|
name: dalli
|
83
|
-
requirement:
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
84
114
|
none: false
|
85
115
|
requirements:
|
86
116
|
- - ! '>='
|
@@ -88,21 +118,31 @@ dependencies:
|
|
88
118
|
version: '0'
|
89
119
|
type: :development
|
90
120
|
prerelease: false
|
91
|
-
version_requirements:
|
121
|
+
version_requirements: !ruby/object:Gem::Requirement
|
122
|
+
none: false
|
123
|
+
requirements:
|
124
|
+
- - ! '>='
|
125
|
+
- !ruby/object:Gem::Version
|
126
|
+
version: '0'
|
92
127
|
- !ruby/object:Gem::Dependency
|
93
128
|
name: memcached
|
94
|
-
requirement:
|
129
|
+
requirement: !ruby/object:Gem::Requirement
|
95
130
|
none: false
|
96
131
|
requirements:
|
97
|
-
- -
|
132
|
+
- - ! '>='
|
98
133
|
- !ruby/object:Gem::Version
|
99
|
-
version:
|
134
|
+
version: '0'
|
100
135
|
type: :development
|
101
136
|
prerelease: false
|
102
|
-
version_requirements:
|
137
|
+
version_requirements: !ruby/object:Gem::Requirement
|
138
|
+
none: false
|
139
|
+
requirements:
|
140
|
+
- - ! '>='
|
141
|
+
- !ruby/object:Gem::Version
|
142
|
+
version: '0'
|
103
143
|
- !ruby/object:Gem::Dependency
|
104
144
|
name: memcache-client
|
105
|
-
requirement:
|
145
|
+
requirement: !ruby/object:Gem::Requirement
|
106
146
|
none: false
|
107
147
|
requirements:
|
108
148
|
- - ! '>='
|
@@ -110,10 +150,15 @@ dependencies:
|
|
110
150
|
version: '0'
|
111
151
|
type: :development
|
112
152
|
prerelease: false
|
113
|
-
version_requirements:
|
153
|
+
version_requirements: !ruby/object:Gem::Requirement
|
154
|
+
none: false
|
155
|
+
requirements:
|
156
|
+
- - ! '>='
|
157
|
+
- !ruby/object:Gem::Version
|
158
|
+
version: '0'
|
114
159
|
- !ruby/object:Gem::Dependency
|
115
160
|
name: rake
|
116
|
-
requirement:
|
161
|
+
requirement: !ruby/object:Gem::Requirement
|
117
162
|
none: false
|
118
163
|
requirements:
|
119
164
|
- - ! '>='
|
@@ -121,7 +166,12 @@ dependencies:
|
|
121
166
|
version: '0'
|
122
167
|
type: :development
|
123
168
|
prerelease: false
|
124
|
-
version_requirements:
|
169
|
+
version_requirements: !ruby/object:Gem::Requirement
|
170
|
+
none: false
|
171
|
+
requirements:
|
172
|
+
- - ! '>='
|
173
|
+
- !ruby/object:Gem::Version
|
174
|
+
version: '0'
|
125
175
|
description: Wraps memcached, redis(-namespace), memcache-client, dalli and handles
|
126
176
|
their weirdnesses, including forking
|
127
177
|
email:
|
@@ -177,7 +227,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
177
227
|
version: '0'
|
178
228
|
requirements: []
|
179
229
|
rubyforge_project: cache
|
180
|
-
rubygems_version: 1.8.
|
230
|
+
rubygems_version: 1.8.21
|
181
231
|
signing_key:
|
182
232
|
specification_version: 3
|
183
233
|
summary: A unified cache handling interface inspired by libraries like ActiveSupport::Cache::Store,
|
@@ -195,3 +245,4 @@ test_files:
|
|
195
245
|
- test/test_memcached_storage.rb
|
196
246
|
- test/test_rails_cache_storage.rb
|
197
247
|
- test/test_redis_storage.rb
|
248
|
+
has_rdoc:
|