RedisCacheDriver.php: use extension provided serialization

This commit is contained in:
Zankaria 2024-10-28 22:21:33 +01:00
parent 39683db736
commit 39635cfa33

View file

@ -14,6 +14,9 @@ class RedisCacheDriver implements CacheDriver {
if ($password) {
$this->inner->auth($password);
}
if (!$this->inner->setOption(\Redis::OPT_SERIALIZER, \Redis::SERIALIZER_JSON)) {
throw new \RuntimeException('Unable to configure Redis serializer');
}
if (!$this->inner->select($database)) {
throw new \RuntimeException('Unable to connect to Redis!');
}
@ -26,15 +29,14 @@ class RedisCacheDriver implements CacheDriver {
if ($ret === false) {
return null;
}
return \json_decode($ret, true);
return $ret;
}
public function set(string $key, mixed $value, mixed $expires = false): void {
if ($expires === false) {
$this->inner->set($this->prefix . $key, \json_encode($value));
$this->inner->set($this->prefix . $key, $value);
} else {
$expires = $expires * 1000; // Seconds to milliseconds.
$this->inner->setex($this->prefix . $key, $expires, \json_encode($value));
$this->inner->setEx($this->prefix . $key, $expires, $value);
}
}