Cache::Meh - A cache of indifferent quality
version 0.04
use 5.008;
use Cache::Meh;
use Digest::SHA qw(sha1);
my $cache = Cache::Meh->new(
filename => 'blort',
validity => 10, # seconds
lookup => sub {
my $key = shift;
return sha1($key);
},
);
my $value = $cache->get('some_key');
if ( sha1('some_key') eq $value ) {
print "equal\n";
}
else {
print "not equal\n";
}
This module is intended to implement a very simple memory cache where the internal cache state is serialized to disk by Storable so that the cached data persists beyond a single execution environment which makes it suitable for things like cron tasks or CGI handlers and the like.
You may optionally disable disk access by setting the only_memory
attribute.
Cache state is stored to disk when a key is set in the cache; keys are only
purged from the cache when they expire and there is no lookup
function
available. These are arguably bad design decisions which may encourage you
to seek your caching pleasure elsewhere. On the other hand, pull requests
are welcome.
Since this module is intended to be run under Perl 5.8 (but preferably much much more recent Perls) it sadly eschews fancy object systems like Moo. It doesn't require any dependencies beyond core modules. I maybe would have called it Cache::Tiny, but then people might use it.
Besides, this is a cache of indifferent quality. You probably ought to be using something awesome like CHI or Cache::Cache or Cache.
This is the filename for your Storable file. Required unless you
specify only_memory
.
The file is written to the "temporary" path as provided by File::Spec
tmpdir
. On Unix systems, you may influence this directory by
setting the TMPDIR
environment variable.
If this attribute is set, then DO NOT access the disk for reads or
writes. Only store cache values in memory. This option is mutually
exclusive from the filename
attribute above.
Pass an argument to set it; no argument to get its current value.
How long keys should be considered valid in seconds. Arguments must be positive integers.
Each key has an insert time; when the insert time + validity is greater than the current time, the cache refreshes the cached value by executing the lookup function or evicting the key from the cache if no lookup function is provided.
This value defaults to 300 seconds (5 minutes) if not provided.
Pass an argument to set it; no argument to get its current value.
A coderef which is executed when a key is no longer valid or not found in the cache. The coderef is given the cache key as a parameter.
Optional; no default.
A constructor. You must provide the filename unless only_memory
is set.
You may optionally provide a validity time and lookup function. The cache state
is loaded (if available) as part of object construction.
Takes a key which can be any valid Perl hash key term. Returns the cached value or undef if no lookup function is defined.
Takes a key and a value which is unconditionally inserted into the cache. Returns the cache object.
The cache state is serialized during set operations unless only_memory
is set.
Mark Allen mrallen1@yahoo.com
This software is copyright (c) 2014 by Mark Allen.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.