diff --git a/lib/private/memcache/redis.php b/lib/private/memcache/redis.php index 83be662eab..68b62e7534 100644 --- a/lib/private/memcache/redis.php +++ b/lib/private/memcache/redis.php @@ -25,9 +25,9 @@ namespace OC\Memcache; -use OCP\IMemcache; +use OCP\IMemcacheTTL; -class Redis extends Cache implements IMemcache { +class Redis extends Cache implements IMemcacheTTL { /** * @var \Redis $cache */ @@ -195,6 +195,10 @@ class Redis extends Cache implements IMemcache { return false; } + public function setTTL($key, $ttl) { + self::$cache->expire($this->getNamespace() . $key, $ttl); + } + static public function isAvailable() { return extension_loaded('redis') && version_compare(phpversion('redis'), '2.2.5', '>='); diff --git a/lib/public/imemcachettl.php b/lib/public/imemcachettl.php new file mode 100644 index 0000000000..aae26accb4 --- /dev/null +++ b/lib/public/imemcachettl.php @@ -0,0 +1,37 @@ + + * + * @copyright Copyright (c) 2015, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see + * + */ + +namespace OCP; + +/** + * Interface for memcache backends that support setting ttl after the value is set + * + * @since 9.0.0 + */ +interface IMemcacheTTL extends IMemcache { + /** + * Set the ttl for an existing value + * + * @param string $key + * @param int $ttl time to live in seconds + */ + public function setTTL($key, $ttl); +}