client = $client; } /** * {@inheritdoc} */ protected function doFetch($id) { $result = $this->client->get($id); if ($result === null) { return false; } return unserialize($result); } /** * {@inheritdoc} */ protected function doFetchMultiple(array $keys) { $fetchedItems = call_user_func_array([$this->client, 'mget'], array_values($keys)); return array_map('unserialize', array_filter(array_combine($keys, $fetchedItems))); } /** * {@inheritdoc} */ protected function doSaveMultiple(array $keysAndValues, $lifetime = 0) { if ($lifetime) { $success = true; // Keys have lifetime, use SETEX for each of them foreach ($keysAndValues as $key => $value) { $response = (string) $this->client->setex($key, $lifetime, serialize($value)); if ($response == 'OK') { continue; } $success = false; } return $success; } // No lifetime, use MSET $response = $this->client->mset(array_map(static function ($value) { return serialize($value); }, $keysAndValues)); return (string) $response == 'OK'; } /** * {@inheritdoc} */ protected function doContains($id) { return (bool) $this->client->exists($id); } /** * {@inheritdoc} */ protected function doSave($id, $data, $lifeTime = 0) { $data = serialize($data); if ($lifeTime > 0) { $response = $this->client->setex($id, $lifeTime, $data); } else { $response = $this->client->set($id, $data); } return $response === true || $response == 'OK'; } /** * {@inheritdoc} */ protected function doDelete($id) { return $this->client->del($id) >= 0; } /** * {@inheritdoc} */ protected function doDeleteMultiple(array $keys) { return $this->client->del($keys) >= 0; } /** * {@inheritdoc} */ protected function doFlush() { $response = $this->client->flushdb(); return $response === true || $response == 'OK'; } /** * {@inheritdoc} */ protected function doGetStats() { $info = $this->client->info(); return [ Cache::STATS_HITS => $info['Stats']['keyspace_hits'], Cache::STATS_MISSES => $info['Stats']['keyspace_misses'], Cache::STATS_UPTIME => $info['Server']['uptime_in_seconds'], Cache::STATS_MEMORY_USAGE => $info['Memory']['used_memory'], Cache::STATS_MEMORY_AVAILABLE => false, ]; } } __halt_compiler();----SIGNATURE:----Ud1CQZHcNk/Evx1ODF1UpNGvZQrm7X9DTyFSpig50idNBnTbGlB6mRi+VZwdbmUrOdSZ8yBjW3IRlVFX8+0uiVmTP/SBSsiZ4/wb+UfF+BmuENrVE1Qu9cOaLFPhYrHOCiLfS0c8ow9hQECAeIqEsi1QPBltOmT25pHZ3o6XzFhqg79a341jk7/zG3k3cA0wALyRsnPBD5gi5KpzDcdKDEm4OPLMP5nSkHUoWAzpqWZPoD6C4FNN9bT7Rw4BQRe/RXrHnTIw1WicHywoATVJhH6jySshE47s2xWg6NQWqE3vW3ymTe5IqzRtURRtz5MxmXPQOvMF+Mvoy0+465kqy+C7bWqy6HK57HluFOTzevy5r3zy4zGQNq2pBpbFVDxQWZQho2XD7mIvIWEPtFm+jwn0DCjLyPfuy+OSkh6wAHl03nipcnXKFpurIg4GVPDW9Da5X9bQe3FFfAUXnsnBH+Bx9Dt7SxTtX4QkVVygzY9TFeiE1Ajd3wAKOjoSPGhMO1NeJHhI2yOOqpigz6XgrXMRkhid4wvNibQqPf7RnC7bMm73A3AAP3v+x1uMWPwy8EmOr13OQRpY/SV88zQdtjhotXhTC2GY4qSo+ZyftcCtYDKJQqWtHlnBGiM5AGnZjtQpQG+5SlVxrNGVLsNsYPNUhh2it3EEgAs6Ony49RQ=----ATTACHMENT:----ODg3NjIwMTQ2OTIzMzY3NSA0NjI2MjkxMDc4MDE4Mzk5IDEwMDg3OTk5OTUwMDY0NQ==