X-Git-Url: http://git.rot13.org/?p=perl-Redis.git;a=blobdiff_plain;f=lib%2FRedis.pm;h=ed5e2ad094a10e777a8d8f221e9798d38fffb234;hp=1ec303790d449391b8e4000425ce969dfaeddc2f;hb=c6feb7aa4faf446b401231c3e85f94a8d2ae3654;hpb=5a01d65e3bd6c4b29fe90af463e06d484039c574 diff --git a/lib/Redis.pm b/lib/Redis.pm index 1ec3037..ed5e2ad 100644 --- a/lib/Redis.pm +++ b/lib/Redis.pm @@ -79,6 +79,23 @@ sub _sock_result_bulk { _sock_read_bulk(); } +sub _sock_result_bulk_list { + my $self = shift; + warn "## _sock_result_bulk_list ",dump( @_ ); + + my $size = $self->_sock_send( @_ ); + confess $size unless $size > 0; + $size--; + + my @list = ( 0 .. $size ); + foreach ( 0 .. $size ) { + $list[ $_ ] = _sock_read_bulk(); + } + + warn "## list = ", dump( @list ); + return @list; +} + sub __sock_ok { my $ok = <$sock>; return undef if $ok eq "nil\r\n"; @@ -317,18 +334,7 @@ sub llen { sub lrange { my ( $self, $key, $start, $end ) = @_; - my $size = $self->_sock_send('LRANGE', $key, $start, $end); - - confess $size unless $size > 0; - $size--; - - my @list = ( 0 .. $size ); - foreach ( 0 .. $size ) { - $list[ $_ ] = _sock_read_bulk(); - } - - warn "## lrange $key $start $end = [$size] ", dump( @list ); - return @list; + $self->_sock_result_bulk_list('LRANGE', $key, $start, $end); } =head2 ltrim @@ -432,6 +438,39 @@ sub scard { $self->_sock_send( 'SCARD', $key ); } +=head2 sismember + + $r->sismember( $key, $member ); + +=cut + +sub sismember { + my ( $self, $key, $member ) = @_; + $self->_sock_send_bulk_number( 'SISMEMBER', $key, $member ); +} + +=head2 sinter + + $r->sinter( $key1, $key2, ... ); + +=cut + +sub sinter { + my $self = shift; + $self->_sock_result_bulk_list( 'SINTER', @_ ); +} + +=head2 sinterstore + + my $ok = $r->sinterstore( $dstkey, $key1, $key2, ... ); + +=cut + +sub sinterstore { + my $self = shift; + $self->_sock_send_ok( 'SINTERSTORE', @_ ); +} + =head1 AUTHOR Dobrica Pavlinusic, C<< >>