inner = new \Memcached(); if (!$this->inner->setOption(\Memcached::OPT_BINARY_PROTOCOL, true)) { throw new \RuntimeException('Unable to set the memcached protocol!'); } if (!$this->inner->setOption(\Memcached::OPT_PREFIX_KEY, $prefix)) { throw new \RuntimeException('Unable to set the memcached prefix!'); } if (!$this->inner->addServers($memcached_server)) { throw new \RuntimeException('Unable to add the memcached server!'); } } public function get(string $key): mixed { $ret = $this->inner->get($key); // If the returned value is false but the retrival was a success, then the value stored was a boolean false. if ($ret === false && $this->inner->getResultCode() !== \Memcached::RES_SUCCESS) { return null; } return $ret; } public function set(string $key, mixed $value, mixed $expires = false): void { $this->inner->set($key, $value, (int)$expires); } public function delete(string $key): void { $this->inner->delete($key); } public function flush(): void { $this->inner->flush(); } }