/[Sack]/trunk/lib/Sack/Digest/Redis.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Contents of /trunk/lib/Sack/Digest/Redis.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 90 - (show annotations)
Wed Sep 30 19:54:01 2009 UTC (14 years, 7 months ago) by dpavlin
File size: 931 byte(s)
added digest implementation based on shared redis server
1 package Sack::Digest::Redis;
2
3 use warnings;
4 use strict;
5
6 use base qw(Sack::Digest);
7
8 use Digest::MD5 qw(md5);
9
10 use lib '/srv/Redis/lib';
11 use Redis;
12
13 sub new {
14 my $class = shift;
15 my $self = bless {@_}, $class;
16
17 $self->{redis} = Redis->new( server => '127.0.0.1:6379' );
18
19 return $self;
20 }
21
22 sub to_int {
23 my ( $self, $full ) = @_;
24
25 my $md5 = md5 $full;
26
27 if ( my $d = $self->{redis}->get( "md5_nr:$md5" ) ) {
28 warn "## d $d";
29 return $d;
30 } else {
31 my $redis = $self->{redis};
32 my $seq = $redis->incr( 'seq' );
33 warn "## seq $seq";
34 $redis->set( "md5:$md5" => $full );
35 $redis->set( "md5_nr:$md5" => $seq );
36 $redis->set( "nr_md5:$seq" => $md5 );
37 warn "## seq $seq";
38 return $seq;
39 }
40
41 }
42
43 sub from_int {
44 my ( $self, $d ) = @_;
45
46 my $md5 = $self->{redis}->get( "nr_md5:$d" ) || return $d;
47 $self->{redis}->get( "md5:$md5" );
48 }
49
50
51 sub lookup {
52 my ( $self, $name, $key ) = @_;
53 $self->{redis}->get( "$name:$key" );
54 }
55
56 1;

  ViewVC Help
Powered by ViewVC 1.1.26