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)); } } 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');