| Data-Model documentation | Contained in the Data-Model distribution. |
Data::Model::Driver::Cache::Memcached - Penetration cache is offered to the basic driver by memcached protocol
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 {
....
};
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.
Kazuhiro Osawa <yappo <at> shibuya <döt> pl>
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
| Data-Model documentation | Contained in the Data-Model distribution. |
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;