The Perl Toolchain Summit 2025 Needs You: You can help 🙏 Learn more

NAME

Data::Model::Driver::Memcached - storage driver for memcached protocol

SYNOPSIS

package MyDB;
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