Cache::Memcached::Fast::Safe3pm
Cache::memcached::fast with sanitizing keys and fork-safe
Usage
use Cache::Memcached::Fast::Safe;my $memd = Cache::Memcached::Fast::Safe->new({servers => [..]});#This module supports all method that Cache::Memcached::Fast has.
Overview
Cache::Memcached::Fast::Safe is subclass of Cache::Memcached::Fast. Cache::Memcached::Fast::Safe sanitizes all requested keys for against memcached injection problem. and call disconnect_all automatically after fork for fork-safe.
Additional method
- get_or_set($key:Str, $callback:CodeRef [,$expires:Num])
-
Get a cache value for
$keyif it's already cached. If can not retrieve cache values, execute$callbackand cache with$expiresseconds.$memcached->get_or_set('key:941',sub {DB->retrieve(941)},10);callback can also return expires sec.
$memcached->get_or_set('key:941',sub {my $val = DB->retrieve(941);return ($val, 10)});
CUSTOMIZE Sanitizer
This module allow to change sanitizing behavior through $Cache::Memcached::Fast::Safe::SANITIZE_METHOD. Default sanitizer is
use bytes;my %escapes = map { chr($_) => sprintf('%%%02X', $_) } (0x00..0x20, 0x7f..0xff);local $Cache::Memcached::Fast::Safe::SANITIZE_METHOD = sub {my $key = shift;$key =~ s/([\x00-\x20\x7f-\xff])/$escapes{$1}/ge;if ( length $key > 200 ) {$key = sha1_hex($key);}$key;};
Releases
Unchanged in 2 releases since Debian 12 (Bookworm).