CHI
view release on metacpan or search on metacpan
We leave this running for a few hours (or as needed), then replace it with
my $cache = CHI->new(
driver => 'File',
root_dir => '/new/cache/root'
);
You can access the mirror cache with the C<mirror_cache> method. For example,
to see how many keys have made it over to the mirror cache:
my @keys = $cache->mirror_cache->get_keys();
=head2 Creating subcaches
As illustrated above, you create subcaches by passing the C<l1_cache> and/or
C<mirror_cache> option to the CHI constructor. These options, in turn, should
contain a hash of options to create the subcache with.
The cache containing the subcache is called the I<parent cache>.
The following options are automatically inherited by the subcache from the
parent cache, and may not be overridden:
expires_at
expires_in
expires_variance
serializer
(Reason: for efficiency, we want to create a single L<cache
object|CHI::CacheObject> and store it in both caches. The cache object contains
expiration information and is dependent on the serializer. At some point we
could conceivably add code that will use a single object or separate objects as
necessary, and thus allow the above to be overridden.)
The following options are automatically inherited by the subcache from the
parent cache, but may be overridden:
namespace
on_get_error
on_set_error
All other options are initialized in the subcache as normal, irrespective of
their values in the parent.
It is not currently possible to pass an existing cache in as a subcache.
=head2 Common subcache behaviors
These behaviors hold regardless of the type of subcache.
The following methods are distributed to both the primary cache and subcache:
clear
expire
purge
remove
The following methods return information solely from the primary cache.
However, you are free to call them explicitly on the subcache. (Trying to merge
in subcache information automatically would require too much guessing about the
caller's intent.)
get_keys
get_namespaces
get_object
get_expires_at
exists_and_is_expired
is_valid
dump_as_hash
=head2 Multiple subcaches
It is valid for a cache to have one of each kind of subcache, e.g. an L1 cache
and a mirror cache.
A cache cannot have more than one of each kind of subcache, but a subcache can
have its own subcaches, and so on. e.g.
my $cache = CHI->new(
driver => 'Memcached',
servers => [ "10.0.0.15:11211", "10.0.0.15:11212" ],
l1_cache => {
driver => 'File',
root_dir => '/path/to/root',
l1_cache => { driver => 'RawMemory', global => 1 }
}
);
=head2 Methods for parent caches
=over
=item has_subcaches( )
Returns a boolean indicating whether this cache has subcaches.
=item l1_cache( )
Returns the L1 cache for this cache, if any. Can only be called if
I<has_subcaches> is true.
=item mirror_cache( )
Returns the mirror cache for this cache, if any. Can only be called if
I<has_subcaches> is true.
=item subcaches( )
Returns the subcaches for this cache, in arbitrary order. Can only be called if
I<has_subcaches> is true.
=back
=head2 Methods for subcaches
=over
=item is_subcache( )
Returns a boolean indicating whether this is a subcache.
( run in 1.983 second using v1.01-cache-2.11-cpan-99c4e6809bf )