Как выборочно очистить кеш (используя теги или другой параметр) с помощью 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);
}
}
Эта работа довольно проста и работает для моих проектов.
* Примечание: эти коды нуждаются в модификации, извините за публикацию в спешке