redis; } public function getKey() { return $this->key; } public function getValue() { return json_decode($this->getRedis()->get($this->key), true); } public function setValue($value) { $this->getRedis()->set($this->key, json_encode($value, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES)); return $this; } public function delete() { $this->getRedis()->executeCommand('DEL', [$this->key]); return $this; } public function expire($ttl) { $this->getRedis()->executeCommand('EXPIRE', [$this->key, $ttl]); return $this; } private function buildKey(array $parts) { $keyParts = []; foreach($parts as $part) { $keyParts[] = str_replace('_', ':', $part); } return implode(':', $keyParts); } public function __construct(...$key) { if (empty($key)) { throw new InvalidArgumentException('You must specify at least one key.'); } $this->key = $this->buildKey($key); } }