package Data::Model::Driver::Cache::Memcached; use strict; use warnings; use base 'Data::Model::Driver::Cache'; sub add_to_cache { my($self, $key, $data) = @_; my $ret = $self->{memcached}->add($key, $data); return if !defined $ret; return $ret; } sub get_from_cache { my($self, $key) = @_; my $ret = $self->{memcached}->get($key); return if !defined $ret; return $ret; } sub get_multi_from_cache { my($self, $keys) = @_; my $ret = $self->{memcached}->get_multi($keys); return if !defined $ret; return $ret; } sub remove_from_cache { my($self, $key) = @_; my $ret = $self->{memcached}->delete($key); return if !defined $ret; return $ret; } 1; =head1 NAME Data::Model::Driver::Cache::Memcached - Penetration cache is offered to the basic driver by memcached protocol =head1 SYNOPSIS package MyDB; use base 'Data::Model'; use Data::Model::Schema; use Data::Model::Driver::DBI; use Data::Model::Driver::Cache::Memcached; my $dbi_connect_options = {}; my $fallback_driver = Data::Model::Driver::DBI->new( dsn => 'dbi:mysql:host=localhost:database=test', username => 'user', password => 'password', connect_options => $dbi_connect_options, ); my $driver = Data::Model::Driver::Cache::Memcached->new( fallback => $fallback_driver, memcached => Cache::Memcached::Fast->new({ servers => [ { address => "localhost:11211" }, ], }), ); base_driver $driver; install_model model_name => schema { .... }; =head1 DESCRIPTION Penetration cache is offered to the basic driver. Cash is stored in the memcached protocol server. When cash does not hit, it asks fallback driver. =head1 SEE ALSO L, L =head1 AUTHOR Kazuhiro Osawa Eyappo shibuya plE =head1 LICENSE This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =cut