mirror of https://github.com/nextcloud/server
Merge pull request #38562 from nextcloud/redis-default-ttl
This commit is contained in:
commit
18434d1ef3
|
@ -52,6 +52,9 @@ class Redis extends Cache implements IMemcacheTTL {
|
|||
],
|
||||
];
|
||||
|
||||
private const DEFAULT_TTL = 24 * 60 * 60; // 1 day
|
||||
private const MAX_TTL = 30 * 24 * 60 * 60; // 1 month
|
||||
|
||||
/**
|
||||
* @var \Redis|\RedisCluster $cache
|
||||
*/
|
||||
|
@ -83,11 +86,12 @@ class Redis extends Cache implements IMemcacheTTL {
|
|||
|
||||
public function set($key, $value, $ttl = 0) {
|
||||
$value = self::encodeValue($value);
|
||||
if ($ttl > 0) {
|
||||
return $this->getCache()->setex($this->getPrefix() . $key, $ttl, $value);
|
||||
} else {
|
||||
return $this->getCache()->set($this->getPrefix() . $key, $value);
|
||||
if ($ttl === 0) {
|
||||
// having infinite TTL can lead to leaked keys as the prefix changes with version upgrades
|
||||
$ttl = self::DEFAULT_TTL;
|
||||
}
|
||||
$ttl = min($ttl, self::MAX_TTL);
|
||||
return $this->getCache()->setex($this->getPrefix() . $key, $ttl, $value);
|
||||
}
|
||||
|
||||
public function hasKey($key) {
|
||||
|
@ -121,11 +125,14 @@ class Redis extends Cache implements IMemcacheTTL {
|
|||
*/
|
||||
public function add($key, $value, $ttl = 0) {
|
||||
$value = self::encodeValue($value);
|
||||
if ($ttl === 0) {
|
||||
// having infinite TTL can lead to leaked keys as the prefix changes with version upgrades
|
||||
$ttl = self::DEFAULT_TTL;
|
||||
}
|
||||
$ttl = min($ttl, self::MAX_TTL);
|
||||
|
||||
$args = ['nx'];
|
||||
if ($ttl !== 0 && is_int($ttl)) {
|
||||
$args['ex'] = $ttl;
|
||||
}
|
||||
$args['ex'] = $ttl;
|
||||
|
||||
return $this->getCache()->set($this->getPrefix() . $key, $value, $args);
|
||||
}
|
||||
|
@ -182,6 +189,11 @@ class Redis extends Cache implements IMemcacheTTL {
|
|||
}
|
||||
|
||||
public function setTTL($key, $ttl) {
|
||||
if ($ttl === 0) {
|
||||
// having infinite TTL can lead to leaked keys as the prefix changes with version upgrades
|
||||
$ttl = self::DEFAULT_TTL;
|
||||
}
|
||||
$ttl = min($ttl, self::MAX_TTL);
|
||||
$this->getCache()->expire($this->getPrefix() . $key, $ttl);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue