Algorithm-SpatialIndex-Storage-Redis
view release on metacpan or search on metacpan
lib/Algorithm/SpatialIndex/Storage/Redis.pm view on Meta::CPAN
package Algorithm::SpatialIndex::Storage::Redis;
use 5.008001;
use strict;
use warnings;
use Carp qw(confess);
our $VERSION = '0.01';
use Scalar::Util qw(blessed);
use Redis;
use parent 'Algorithm::SpatialIndex::Storage';
use Sereal::Encoder;
use Sereal::Decoder;
use Class::XSAccessor {
getters => {
_conn => 'redisconn',
_prefix => 'prefix',
lib/Algorithm/SpatialIndex/Storage/Redis.pm view on Meta::CPAN
my $opt = $self->{opt}{redis};
# Determine key prefix
my $prefix = $opt->{prefix};
confess("Need Redis key name prefix for Redis storage backend")
if not defined $prefix;
$self->{prefix} = $prefix;
# Setup (de)serializers
my $enc = $opt->{encoder};
if (blessed($enc)) {
$self->{encoder} = $enc;
}
else {
$self->{encoder} = Sereal::Encoder->new(ref($enc) eq 'HASH' ? $enc : ());
}
my $dec = $opt->{decoder};
if (blessed($dec)) {
$self->{decoder} = $dec;
}
else {
$self->{decoder} = Sereal::Decoder->new(ref($dec) eq 'HASH' ? $dec : ());
}
# Connect to Redis
my $conn = $opt->{conn};
if (blessed($conn)) {
$self->{redisconn} = $conn;
}
else {
$self->{redisconn} = Redis->new(%$conn);
}
# Assert state of data in Redis
$conn = $self->_conn;
my $type;
$type = $conn->type($prefix . "_options");
( run in 0.774 second using v1.01-cache-2.11-cpan-de7293f3b23 )