Как выборочно очистить кеш (используя теги или другой параметр) с помощью Memchached backend и Zend Framework

Мы используем Memcached и Zend Framework в нашем веб-проекте. Теперь нам нужно очистить кэш выборочно, используя теги, как указано в API Zend_Cache.

К сожалению, memcached не поддерживает теги.

Я нашел эти обходные пути:

  • Memcached-тег проекта. Кто-нибудь проверял это? Как реализовать это с Zend?
  • Используйте подстановочные знаки, как в этом вопросе, но это кажется немного запутанным, менее прозрачным и сложным для реализации с Zend.
  • Используйте эту или эту реализацию для поддержки тегов в Memcached, осознавая недостатки.
  • Любой другой вариант?

заранее спасибо

1 ответ

Ты прав. Memcache не поддерживает теги.

Вы можете использовать другое значение ключа для реализации тега для memcache.

EX:

$ this-> objCache-> save ($ arrResults, $ strKey, массив ($strMyTag),$intCacheTime) // примечание: массив ($ strMyTag) не работает для Memcache

MemcacheTag:: setTag ($ strKey, $ strMyTag) // наша работа

О методе setTag и MemcacheTag:

function setTag ($ strKey, $ strTag) {

$arrKey  = $cacheOjb->get($strTag);

$arrKey[]= $strKey; 

}

function deleteCacheWithTag ($ strTag) {

$arrKey  = $cacheOjb->get($strTag);

foreach ($arrKey as $strKey){

   $objCache->delete($strKey);

}

}

Эта работа довольно проста и работает для моих проектов.

* Примечание: эти коды нуждаются в модификации, извините за публикацию в спешке

Другие вопросы по тегам