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.330 second using v1.01-cache-2.11-cpan-de7293f3b23 )