Memcache делает недействительными записи в соответствии с шаблоном?

StackOverflow https://stackoverflow.com/questions/1202174

  •  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 не поддерживает удаления из пространства имен.

В официальной вики есть рекомендации по обходу это:

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top