NAME
Data::Model::Driver::Memcached - storage driver for memcached protocol
SYNOPSIS
package MyDB;
use base 'Data::Model';
use Data::Model::Schema;
use Data::Model::Driver::Memcached;
my $dbi_connect_options = {};
my $driver = Data::Model::Driver::Memcached->new(
memcached => Cache::Memcached::Fast->new({ servers => [ { address => "localhost:11211" }, ], }),
);
base_driver $driver;
install_model model_name => schema {
....
};
DESCRIPTION
Storage is used via a memcached protocol.
It can save at memcached, Tokyo Tyrant, kai, groonga, etc.
OPTIONS
serializer
my $driver = Data::Model::Driver::Memcached->new(
memcached => Cache::Memcached::Fast->new({ servers => [ { address => "localhost:11211" }, ], }),
serializer => 'Default', # default is L<Data::MessagePack> or messagepack minimum set for Data::Model
);
you can use customizable serializer.
{
package MySerializer;
sub serialize {
my($class, $c, $hash) = @_;
# you serialize of $hash
return $serialize_string;
}
sub deserialize {
my($class, $c, $serialize_string) = @_;
...
return $hash;
}
}
my $driver = Data::Model::Driver::Memcached->new(
memcached => Cache::Memcached::Fast->new({ servers => [ { address => "localhost:11211" }, ], }),
serializer => '+MySerializer',
);
strip_keys
strip tables key data, Because key data stored in a memcached key part.
my $driver = Data::Model::Driver::Memcached->new(
memcached => Cache::Memcached::Fast->new({ servers => [ { address => "localhost:11211" }, ], }),
strip_keys => 1,
);
ignore_undef_value
When value is undef, a value is not put into storage.
It becomes size saving at the time of obvious empty data.
my $driver = Data::Model::Driver::Memcached->new(
memcached => Cache::Memcached::Fast->new({ servers => [ { address => "localhost:11211" }, ], }),
ignore_undef_value => 1,
);
model_name_realname column_name_rename
compress your table name and column name.
OPTIONS EXAMPLE
my $driver = Data::Model::Driver::Memcached->new(
memcached => Cache::Memcached::Fast->new({ servers => [ { address => "localhost:11211" }, ], namespace => 'test', }),
serializer => 'Default',
strip_keys => 1,
);
install_model simple => schema {
schema_options model_name_realname => 's';
key 'id';
column 'id';
column 'name';
column 'nickname';
schema_options column_name_rename => {
id => 1,
name => 2,
nickname => 3,
};
};
$model->set(
simple => 'keyvalue' => {
name => 'osawa',
nickname => 'yappo',
}
);
# same code
$memcached->add(
'tests:keyvalue',
Data::MessagePack->pack({ 2 => 'osawa', 3 => 'yappo' }),
);
SEE ALSO
Cache::Memcache::Fast, Data::Model
AUTHOR
Kazuhiro Osawa <yappo <at> shibuya <döt> pl>
LICENSE
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
1 POD Error
The following errors were encountered while parsing the POD:
- Around line 543:
Non-ASCII character seen before =encoding in '<döt>'. Assuming UTF-8