Метод deleteItems класса Cache
Метод deleteItems класса Cache удаляет
сразу несколько записей из кэша по массиву ключей.
Первым параметром передаётся массив ключей, которые
нужно удалить. Метод возвращает true, если
все записи были успешно удалены, и false
в противном случае. В отличие от метода delete,
который удаляет одну запись по одному ключу,
deleteItems позволяет за один вызов очистить
сразу группу записей, что удобно при массовой
инвалидации кэша.
Синтаксис
public function deleteItems(array $keys): bool
Пример
Давайте удалим несколько записей кэша по массиву ключей:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Contracts\Cache\CacheInterface;
class CacheController extends AbstractController
{
#[Route('/cache/delete-items', name: 'cache_delete_items')]
public function deleteItems(CacheInterface $cache): Response
{
$cache->get('key1', fn () => 'article 1');
$cache->get('key2', fn () => 'article 2');
$cache->get('key3', fn () => 'article 3');
$res = $cache->deleteItems(['key1', 'key2']);
var_dump($res);
return new Response('done');
}
}
?>
Результат выполнения кода:
true
Пример
Давайте проверим, что после удаления записи действительно исчезли из кэша:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Contracts\Cache\CacheInterface;
class CacheController extends AbstractController
{
#[Route('/cache/check-items', name: 'cache_check_items')]
public function checkItems(CacheInterface $cache): Response
{
$cache->get('key1', fn () => 'article 1');
$cache->get('key2', fn () => 'article 2');
$cache->deleteItems(['key1', 'key2']);
$res = $cache->get('key1', fn () => 'not found');
return new Response($res);
}
}
?>
Результат выполнения кода:
"not found"
Пример
Давайте удалим записи, среди которых есть несуществующий ключ:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Contracts\Cache\CacheInterface;
class CacheController extends AbstractController
{
#[Route('/cache/delete-mixed', name: 'cache_delete_mixed')]
public function deleteMixed(CacheInterface $cache): Response
{
$cache->get('key1', fn () => 'article 1');
$res = $cache->deleteItems(['key1', 'unknown']);
var_dump($res);
return new Response('done');
}
}
?>
Результат выполнения кода:
true
Смотрите также
-
класс
Cache,
который предоставляет доступ к кэшу -
метод
deleteItem,
который удаляет одну запись кэша по ключу -
метод
getItems,
который возвращает несколько записей по массиву ключей -
метод
clear,
который полностью очищает весь кэш