Announcing Cache::Memcached::Managed
Elizabeth Mattijsen
liz at dijkmat.nl
Sat Jul 9 00:24:24 PDT 2005
At 10:34 PM -0700 7/8/05, Brad Fitzpatrick wrote:
>I was planning on releasing a module named Cache::Memcached::Managed
Sorry to have treaded on your plans with the
Cache::Memcached::Managed namespace, which were unknown to me.
>... for a
>totally different purpose. (memcached's new managed mode...)
And what is that exactly? I couldn't find anything about it. Sounds exciting.
>Bleh, guess I'll need to find a new name.
Not necessarily. Renaming the moduled to something else would not be
a big problem with its current seniority on CPAN. I can't imagine
there are 1000's of people already using it. My other option was
Cache::Memcached::Simple because of the simplified key generation.
And yet another option would be Cache::Memcached::Groups because of
the group management features.
>I suppose I'll just have a constructor option for Cache::Memcached
>like managed => 1, and then have that actually bless as
>Cache::Memcached::Type::Managed or something.
>
>*shrug*
As I said, not necessarily. I would be glad to work out any
namespace conflicts with you / the memcached list.
Elizabeth Mattijsen
=====================================================================
>On Mon, 4 Jul 2005, Elizabeth Mattijsen wrote:
> > With some pride, I would like to announce an extended API for
>> handling memcached data in Perl.
>>
>> ==================================================================
>> The uploaded file
>>
>> Cache-Memcached-Managed-0.07.tar.gz
>>
>> has entered CPAN as
>>
>> file: $CPAN/authors/id/E/EL/ELIZABETH/Cache-Memcached-Managed-0.07.tar.gz
>> size: 31839 bytes
>> md5: 5412fa36de221301e953039c1dac3386
>>
>> No action is required on your part
>> Request entered by: ELIZABETH (Elizabeth Mattijsen)
>> Request entered on: Sun, 03 Jul 2005 21:39:11 GMT
>> Request completed: Sun, 03 Jul 2005 21:39:52 GMT
>> ==================================================================
>>
>> What does this add to the Cache::Memcached API? In short:
>>
>> - automatic key generation
>> The calling subroutine provides the key (by default). Whenever the
>> "get" and "set" operations occur in the same subroutine, you don't
>> need to think up an identifying key that will have to be unique
>> across the entire cache.
>>
>> - ID refinement
>> An ID can be added to the (automatically) generated key (none is by
>> default), allowing easy identification of similar data objects (e.g.
>> the primary key of a Class::DBI object). If necessary, a unique ID
>> can be created automatically (useful when logging events).
>>
>> - version management
>> The caller's package provides an identifying version (by default),
>> allowing differently formatted data-structures caused by source code
>> changes, to live seperately from each other in the cache.
>>
>> - namespace support
>> A namespace identifier allows different realms to co-exist in the
>> same cache (the uid by default). This e.g. allows a group of
>> developers to all use the same cache without interfering with each
>> other.
>>
>> - group management
>> A piece of cached data can be assigned to any number of groups.
>> Cached data can be retrieved and removed by specifying the group to
>> which the data belongs. This can be used to selectively remove
>> cached data that has been invalidated by a database change, or to
>> obtain logged events of which the identification is not known (but
>> the group name is).
>>
>> - easy (default) expiration specification
>> A default expiration per Cache::Memcached::Managed object can be
>> specified. Expirations can be used by using mnemonics D, H, M, S,
>> (e.g. '2D3H' would be 2 days and 3 hours).
>>
>> - automatic fork() detection
>> Sockets are automatically reset in forked processes, no manual reset
>> needed. This allows the module to be used to access cached data
>> during the server start phase in a mod_perl environment.
>>
>> - magical increment
>> Counters are automagically created with incr() if they don't exist yet.
> >
>> - instant invalidation
>> Support for the new "flush_all" memcached action to invalidate all
>> data in a cache in one fell swoop.
>>
>> - dead memcached server detection
>> An easy way to check whether all related memcached servers are still alive.
>>
>> - starting/stopping memcached servers
>> Easy start / stop of indicated memcached servers, mainly intended for
>> development and testing environments.
>>
>> - extensive test-suite
>> An extensive test-suite is included (which is sadly lacking in the
>> Cache::Memcached distribution).
>>
>>
>> Please let me know of any problems, suggestions or other remarks. If
>> the file is not yet in your local CPAN mirror, you can access it from
>> my own repository of CPAN modules at http://www.liz.nl/CPAN .
>>
>>
>>
>> Elizabeth Mattijsen
>>
>>
More information about the memcached
mailing list