[Catalyst] clear() method for Catalyst::Plugin::Cache?

Jason Kohles email at jasonkohles.com
Sat Mar 7 01:11:34 GMT 2009


On Mar 6, 2009, at 7:42 PM, Larry Leszczynski wrote:

> Does it make sense to add a clear() method to Catalyst::Plugin::Cache,
> in addition to the existing get(), set() and remove()?  It seems  
> like a
> common action for cache manipulation.
>
> Any of the various Cache::Cache-based backend flavors should be able  
> to
> support it out of the box.  For specific backends that use a different
> method name to accomplish clearing the cache (e.g.
> Cache::Memcached::libmemcached::flush_all), would need to come up  
> with a
> way to map method names - maybe a config option?:
>
>    __PACKAGE__->config->{'Plugin::Cache'}{backend} = {
>        class   => "Cache::Memcached::libmemcached",
>        method_map => {
>                       clear => 'flush_all',
>                      },
>        servers => ['127.0.0.1:11211'],
>        debug   => 2,
>    };
>
I think this code is a great example of why this is a bad idea as a  
general practice.  If the only thing you are using memcached for is  
session cache, then mapping clear to flush_all has the desired effect,  
but if you are using memcached for more than just session caches, then  
flush_all could be a very bad idea.

And if you are using memcached for just session cache, then adding  
your own code to call flush_all when you want to clear it isn't that  
big a deal.  Personally I can't recall ever running into a situation  
where I had a reason to dump the entire session cache.

-- 
Jason Kohles, RHCA RHCDS RHCE
email at jasonkohles.com - http://www.jasonkohles.com/
"A witty saying proves nothing."  -- Voltaire





More information about the Catalyst mailing list