projects
/
perl-Redis.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fixed Redis::Hash keys problem,
[perl-Redis.git]
/
lib
/
Redis
/
Hash.pm
diff --git
a/lib/Redis/Hash.pm
b/lib/Redis/Hash.pm
index
6dad3dc
..
e5f8f70
100644
(file)
--- a/
lib/Redis/Hash.pm
+++ b/
lib/Redis/Hash.pm
@@
-6,20
+6,23
@@
use warnings;
use Tie::Hash;
use base qw/Redis Tie::StdHash/;
use Tie::Hash;
use base qw/Redis Tie::StdHash/;
+use Data::Dump qw/dump/;
+
=head1 NAME
Redis::Hash - tie perl hashes into Redis
=head1 SYNOPSYS
=head1 NAME
Redis::Hash - tie perl hashes into Redis
=head1 SYNOPSYS
- tie %
$name, 'Redis::Hash', 'name
';
+ tie %
name, 'Redis::Hash', 'prefix
';
=cut
# mandatory methods
sub TIEHASH {
my ($class,$name) = @_;
=cut
# mandatory methods
sub TIEHASH {
my ($class,$name) = @_;
- my $self = $class->new;
+ my $self = Redis->new;
+ $name .= ':' if $name;
$self->{name} = $name || '';
bless $self => $class;
}
$self->{name} = $name || '';
bless $self => $class;
}
@@
-36,13
+39,16
@@
sub FETCH {
sub FIRSTKEY {
my $self = shift;
sub FIRSTKEY {
my $self = shift;
- $self->{keys} = [ $self->keys( $self->{name} . '*') ];
-
unshift @{ $self->{keys} }
;
+ $self->{keys} = [ $self->keys( $self->{name} . '*'
) ];
+
$self->NEXTKEY
;
}
sub NEXTKEY {
my $self = shift;
}
sub NEXTKEY {
my $self = shift;
- unshift @{ $self->{keys} };
+ my $key = shift @{ $self->{keys} } || return;
+ my $name = $self->{name};
+ $key =~ s{^$name}{} || warn "can't strip $name from $key";
+ return $key;
}
sub EXISTS {
}
sub EXISTS {
@@
-58,6
+64,7
@@
sub DELETE {
sub CLEAR {
my ($self) = @_;
$self->del( $_ ) foreach ( $self->keys( $self->{name} . '*' ) );
sub CLEAR {
my ($self) = @_;
$self->del( $_ ) foreach ( $self->keys( $self->{name} . '*' ) );
+ $self->{keys} = [];
}
1;
}
1;