Адаптер MemcachedAdapter
Адаптер MemcachedAdapter создаёт PSR-6 совместимый пул кеша,
который хранит данные в сервере Memcached.
Первым параметром в конструктор передаётся объект \Memcached
или массив DSN-строк для подключения к серверам.
Вторым параметром можно передать пространство имён,
третьим - время жизни элементов по умолчанию.
Адаптер удобен для распределённого кеша между несколькими серверами.
Синтаксис
<?php
use Symfony\Component\Cache\Adapter\MemcachedAdapter;
$cache = new MemcachedAdapter(
\Memcached $client,
string $namespace = '',
int $defaultLifetime = 0,
);
?>
Пример
Давайте создадим пул кеша на основе Memcached и сохраним в него значение:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Cache\Adapter\MemcachedAdapter;
class CacheController extends AbstractController
{
public function index(): Response
{
$client = MemcachedAdapter::createConnection('memcached://localhost:11211');
$cache = new MemcachedAdapter($client, 'app');
$item = $cache->getItem('user');
$item->set('abcde');
$cache->save($item);
$item = $cache->getItem('user');
return new Response($item->get());
}
}
?>
Результат выполнения кода:
abcde
Пример
Давайте создадим подключение через статический метод createConnection
и получим несколько элементов за один запрос:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Cache\Adapter\MemcachedAdapter;
class CacheController extends AbstractController
{
public function index(): Response
{
$client = MemcachedAdapter::createConnection('memcached://localhost:11211');
$cache = new MemcachedAdapter($client, 'app', 3600);
$item1 = $cache->getItem('user');
$item1->set('abcde');
$cache->save($item1);
$item2 = $cache->getItem('article');
$item2->set('hello');
$cache->save($item2);
$items = $cache->getItems(['user', 'article']);
$res = [];
foreach ($items as $item) {
$res[] = $item->get();
}
return new Response(implode(', ', $res));
}
}
?>
Результат выполнения кода:
abcde, hello
Смотрите также
-
класс
Cache,
который управляет пулами кеша -
метод
getItem,
который возвращает элемент кеша по ключу -
метод
save,
который сохраняет элемент в кеш -
адаптер
RedisAdapter,
который кеширует данные в Redis