From 7eb8404040c35bf120019973d67f89b3a9fb33df Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Tue, 20 Jan 2015 10:51:04 +0100 Subject: [PATCH 1/2] Add a test case for memcaches to store an array --- tests/lib/memcache/cache.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/lib/memcache/cache.php b/tests/lib/memcache/cache.php index 8a4a708e4b..e5ceae52fb 100644 --- a/tests/lib/memcache/cache.php +++ b/tests/lib/memcache/cache.php @@ -22,6 +22,12 @@ abstract class Cache extends \Test_Cache { $this->assertEquals('bar', $this->instance->get('foo')); } + public function testGetArrayAfterSet() { + $this->assertNull($this->instance->get('foo')); + $this->instance->set('foo', ['bar']); + $this->assertEquals(['bar'], $this->instance->get('foo')); + } + public function testDoesNotExistAfterRemove() { $this->instance->set('foo', 'bar'); $this->instance->remove('foo'); From e25998df0f469969c4afdb2b926b3e8ef1d2fee0 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Tue, 20 Jan 2015 10:51:27 +0100 Subject: [PATCH 2/2] Json_(en|de)code values on redis to be able to cache arrays --- lib/private/memcache/redis.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/private/memcache/redis.php b/lib/private/memcache/redis.php index f21619887d..78ddd08133 100644 --- a/lib/private/memcache/redis.php +++ b/lib/private/memcache/redis.php @@ -49,18 +49,18 @@ class Redis extends Cache { public function get($key) { $result = self::$cache->get($this->getNamespace() . $key); - if ($result === false and ! self::$cache->exists($this->getNamespace() . $key)) { + if ($result === false && !self::$cache->exists($this->getNamespace() . $key)) { return null; } else { - return $result; + return json_decode($result, true); } } public function set($key, $value, $ttl = 0) { if ($ttl > 0) { - return self::$cache->setex($this->getNamespace() . $key, $ttl, $value); + return self::$cache->setex($this->getNamespace() . $key, $ttl, json_encode($value)); } else { - return self::$cache->set($this->getNamespace() . $key, $value); + return self::$cache->set($this->getNamespace() . $key, json_encode($value)); } }