How to selectively clear cache (using tags or other option) with Memchached backend and Zend Framework
Asked Answered
M

1

3

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

Mcgannon answered 11/6, 2014 at 12:0 Comment(0)
A
2

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

Allargando answered 16/7, 2014 at 7:42 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.