aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport
diff options
context:
space:
mode:
authorJoe Van Dyk <joe@fixieconsulting.com>2009-02-02 16:43:14 -0800
committerJeremy Kemper <jeremy@bitsweat.net>2009-05-18 13:43:56 -0700
commit29550cc91f8dcbfe3e4020986d719c77ddd2f14d (patch)
tree3f085b5ee16cdf55f3659bc7bc8dd71d6aaf2115 /activesupport
parent3e2f0800e33cc056d344a45557815b19463ab416 (diff)
downloadrails-29550cc91f8dcbfe3e4020986d719c77ddd2f14d.tar.gz
rails-29550cc91f8dcbfe3e4020986d719c77ddd2f14d.tar.bz2
rails-29550cc91f8dcbfe3e4020986d719c77ddd2f14d.zip
Add ability to get multiple memcached keys at the same time (via MemCacheStore#read_multi).
Signed-off-by: Jeremy Kemper <jeremy@bitsweat.net>
Diffstat (limited to 'activesupport')
-rw-r--r--activesupport/lib/active_support/cache/mem_cache_store.rb5
-rw-r--r--activesupport/memcached_get_multi.diff0
-rw-r--r--activesupport/test/caching_test.rb9
3 files changed, 14 insertions, 0 deletions
diff --git a/activesupport/lib/active_support/cache/mem_cache_store.rb b/activesupport/lib/active_support/cache/mem_cache_store.rb
index 4d8e1fdd67..90b7526fe1 100644
--- a/activesupport/lib/active_support/cache/mem_cache_store.rb
+++ b/activesupport/lib/active_support/cache/mem_cache_store.rb
@@ -43,6 +43,11 @@ module ActiveSupport
extend Strategy::LocalCache
end
+ # Reads multiple keys from the cache.
+ def read_multi(*keys)
+ @data.get_multi keys
+ end
+
def read(key, options = nil) # :nodoc:
super
@data.get(key, raw?(options))
diff --git a/activesupport/memcached_get_multi.diff b/activesupport/memcached_get_multi.diff
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/activesupport/memcached_get_multi.diff
diff --git a/activesupport/test/caching_test.rb b/activesupport/test/caching_test.rb
index 8bb0c155cf..b845796fe5 100644
--- a/activesupport/test/caching_test.rb
+++ b/activesupport/test/caching_test.rb
@@ -251,6 +251,15 @@ uses_memcached 'memcached backed store' do
end
end
+ def test_multi_get
+ @cache.with_local_cache do
+ @cache.write('foo', 1)
+ @cache.write('goo', 2)
+ result = @cache.read_multi('foo', 'goo')
+ assert_equal({'foo' => 1, 'goo' => 2}, result)
+ end
+ end
+
def test_middleware
app = lambda { |env|
result = @cache.write('foo', 'bar')