Cache::Memcached::Fast with sanitizing keys and fork-safe
Perl Perl6
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib/Cache/Memcached/Fast
t
.gitignore
.travis.yml
Build.PL
Changes
LICENSE
META.json
README.md
cpanfile

README.md

NAME

Cache::Memcached::Fast::Safe - Cache::Memcached::Fast with sanitizing keys and fork-safe

SYNOPSIS

use Cache::Memcached::Fast::Safe;

my $memd = Cache::Memcached::Fast::Safe->new({
  servers => [..]
});

#This module supports all method that Cache::Memcached::Fast has.

DESCRIPTION

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 $key if it's already cached. If can not retrieve cache values, execute $callback and cache with $expires seconds.

    $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

local $Cache::Memcached::Fast::Safe::SANITIZE_METHOD = sub {
    my $key = shift;
    $key = uri_escape($key,"\x00-\x20\x7f-\xff");
    if ( length $key > 200 ) {
        $key = sha1_hex($key);
    }
    $key;
};

AUTHOR

Masahiro Nagano

SEE ALSO

Cache::Memcached::Fast, http://gihyo.jp/dev/feature/01/memcached_advanced/0002 (Japanese)

LICENSE

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.