How to selectively clear cache (using tags or othe

2019-07-04 16:01发布

We use Memcached and Zend Framework in our web project. Now, we need to clean cache selectively using tags as specified in Zend_Cache API.

Unfortunately, memcached doesn't support tags.

I have found these workarounds:

  • Memcached-tag project. Has anybody tested it? How to implement it with Zend?
  • Use wildchards like in this question, but it seems a bit confusing, less transparent and harder to implement with Zend.
  • Use this implementation or this one, for supporting tags in Memcached, beeing aware of the drawbacks.
  • Any other option?

Thanks in advance

1条回答
迷人小祖宗
2楼-- · 2019-07-04 17:01

You're right. Memcache don't support tags.

You can use another key-value to implement tag for memcache.

EX :

$this->objCache->save($arrResults, $strKey,array($strMyTag),$intCacheTime) // note : array($strMyTag) don't work for Memcache

MemcacheTag::setTag($strKey, $strMyTag) // our work around

About setTag Method & 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);

}

}

This work around is quite simple and it works for my projects.

*Note: these codes need some modification, sorry for posting in a hurry

查看更多
登录 后发表回答