Memcache делает недействительными записи в соответствии с шаблоном?
-
05-07-2019 - |
Вопрос
Есть ли способ аннулировать записи в memcache в соответствии с подстановочным ключом? Р>
Так что если у меня есть следующие ключи memcache:
data/1
data/2
data/3
Есть ли способ, которым я могу сделать недействительными эти ключи с помощью чего-то вроде data / *
? Было бы чрезвычайно полезно очистить кучу устаревших данных одним махом.
Решение
Лучший способ - предоставить ключ управления версиями при создании ключа memcache. Мы делаем это, предоставляя единственную функцию / метод для создания ключа в нашей системе.
$var1 = 123;
$var2 = 456;
$cacheKey = makeKey('monkeyInfo', $var1, $var2, ...);
makeKey ()
использует информацию в массиве cacheKeyVersions и возвращает:
5:monkeyInfo:123:456
Обратите внимание на «5» в начале. Это происходит из жестко запрограммированного массива keyNames = > версии. Поэтому, если мы хотим аннулировать КАЖДОЕ значение кеша 'monkeyInfo' в системе, нам просто нужно изменить это число на 6 в массиве. С тех пор тот же звонок будет искать
6:monkeyInfo:123:456
Вот пример того, как может выглядеть массив версий ключа. Вызов makeKey ()
'просто просматривает этот массив, чтобы получить номер версии для любого заданного ключа.
$cacheKeyVersions = array(
'monkeyInfo' => 5,
'zebraInfo' => 2
);
Вы можете делать все что угодно, чтобы реализация соответствовала вашим потребностям, но это основная суть.
Другие советы
memcached не поддерживает удаления из пространства имен.
В официальной вики есть рекомендации по обходу это: