/[Redis.pre-github]/lib/Redis/Hash.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

Annotation of /lib/Redis/Hash.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 43 - (hide annotations)
Sun Mar 22 20:04:17 2009 UTC (15 years, 1 month ago) by dpavlin
File size: 1144 byte(s)
fixed Redis::Hash keys problem,
separate prefix from key with :,
return key names without prefix
1 dpavlin 42 package Redis::Hash;
2    
3     use strict;
4     use warnings;
5    
6     use Tie::Hash;
7     use base qw/Redis Tie::StdHash/;
8    
9 dpavlin 43 use Data::Dump qw/dump/;
10    
11 dpavlin 42 =head1 NAME
12    
13     Redis::Hash - tie perl hashes into Redis
14    
15     =head1 SYNOPSYS
16    
17 dpavlin 43 tie %name, 'Redis::Hash', 'prefix';
18 dpavlin 42
19     =cut
20    
21     # mandatory methods
22     sub TIEHASH {
23     my ($class,$name) = @_;
24 dpavlin 43 my $self = Redis->new;
25     $name .= ':' if $name;
26 dpavlin 42 $self->{name} = $name || '';
27     bless $self => $class;
28     }
29    
30     sub STORE {
31     my ($self,$key,$value) = @_;
32     $self->set( $self->{name} . $key, $value );
33     }
34    
35     sub FETCH {
36     my ($self,$key) = @_;
37     $self->get( $self->{name} . $key );
38     }
39    
40     sub FIRSTKEY {
41     my $self = shift;
42 dpavlin 43 $self->{keys} = [ $self->keys( $self->{name} . '*' ) ];
43     $self->NEXTKEY;
44 dpavlin 42 }
45    
46     sub NEXTKEY {
47     my $self = shift;
48 dpavlin 43 my $key = shift @{ $self->{keys} } || return;
49     my $name = $self->{name};
50     $key =~ s{^$name}{} || warn "can't strip $name from $key";
51     return $key;
52 dpavlin 42 }
53    
54     sub EXISTS {
55     my ($self,$key) = @_;
56     $self->exists( $self->{name} . $key );
57     }
58    
59     sub DELETE {
60     my ($self,$key) = @_;
61     $self->del( $self->{name} . $key );
62     }
63    
64     sub CLEAR {
65     my ($self) = @_;
66     $self->del( $_ ) foreach ( $self->keys( $self->{name} . '*' ) );
67 dpavlin 43 $self->{keys} = [];
68 dpavlin 42 }
69    
70     1;

  ViewVC Help
Powered by ViewVC 1.1.26