diff options
author | Arne Georg Gleditsch <argggh@lxr.linpro.no> | 2007-11-27 00:58:09 +0100 |
---|---|---|
committer | Arne Georg Gleditsch <argggh@lxr.linpro.no> | 2007-11-27 00:58:09 +0100 |
commit | 905478e913aa51469c79f8a52d4f5e833004419b (patch) | |
tree | 1f5cf0bad631593cc5524fe8b7bc780bcef1b01a /lib/LXRng/Cached.pm | |
parent | 0a7345dfa8a6d061e13394fdbe31c77231f1847c (diff) |
Tune caching functionality a bit.
Diffstat (limited to 'lib/LXRng/Cached.pm')
-rw-r--r-- | lib/LXRng/Cached.pm | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/lib/LXRng/Cached.pm b/lib/LXRng/Cached.pm index f11a749..98ef152 100644 --- a/lib/LXRng/Cached.pm +++ b/lib/LXRng/Cached.pm @@ -13,9 +13,10 @@ BEGIN { }; if ($@ eq '') { $memcached = Cache::Memcached->new({ - 'servers' => ['127.0.0.1:11211']}); + 'servers' => ['127.0.0.1:11211'], + 'namespace' => 'lxrng'}); $memcached = undef - unless ($memcached->set(':lxrng_caching' => 1)) + unless ($memcached->set(':caching' => 1)) } } @@ -35,23 +36,22 @@ sub LXRng_Cached_cached(&;@) { if ($LXRng::Cached::memcached) { my ($pkg, $file, $line) = caller(0); my $params; - if (@args > 0) { - $params = Storable::freeze(\@args); - } - else { + unless (@args > 0) { my @caller = caller(1); - $params = Storable::freeze(\@DB::args); + @args = map { UNIVERSAL::can($_, 'cache_key') ? $_->cache_key : $_ + } @DB::args; } - my $key = ':lxrng:'. - Digest::SHA1::sha1_hex(join("\0", $file, $line, $params)); + $params = Storable::freeze(\@args); + + my $key = Digest::SHA1::sha1_hex(join("\0", $file, $line, $params)); my $val = $LXRng::Cached::memcached->get($key); unless ($val) { $val = [$func->()]; - $LXRng::Cached::memcached->set($key, $val); - warn "cache miss for $key"; + $LXRng::Cached::memcached->set($key, $val, 3600); + warn "cache miss for $key (".join(":", $file, $line, @args).")\n"; } else { - warn "cache hit for $key"; + warn "cache hit for $key\n"; } return @$val; } |