|
NAMEData::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 {
....
};
DESCRIPTIONStorage is used via a memcached protocol. It can save at memcached, Tokyo Tyrant, kai, groonga, etc. OPTIONSserializer 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_keysstrip 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_valueWhen 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_renamecompress 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 ALSOCache::Memcache::Fast, Data::Model AUTHORKazuhiro Osawa <yappo <at> shibuya <döt> pl> LICENSEThis library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. POD ERRORSHey! The above document had some coding errors, which are explained below:
|