--- lib/Redis.pm 2009/03/22 13:09:15 23 +++ lib/Redis.pm 2009/03/22 13:37:49 26 @@ -77,7 +77,7 @@ _sock_read_bulk(); } -sub _sock_ok { +sub __sock_ok { my $ok = <$sock>; confess dump($ok) unless $ok eq "+OK\r\n"; } @@ -93,15 +93,27 @@ my $self = shift; warn "## _sock_send_ok ",dump( @_ ); print $sock join(' ',@_) . "\r\n"; - _sock_ok(); + __sock_ok(); +} + +sub __sock_send_bulk_raw { + my $self = shift; + warn "## _sock_send_bulk ",dump( @_ ); + my $value = pop; + print $sock join(' ',@_) . ' ' . length($value) . "\r\n$value\r\n"; } sub _sock_send_bulk { - my ( $self, $command, $key, $value ) = @_; - print $sock "$command $key " . length($value) . "\r\n$value\r\n"; - _sock_ok(); + __sock_send_bulk_raw( @_ ); + __sock_ok(); } +sub _sock_send_bulk_number { + __sock_send_bulk_raw( @_ ); + my $v = _sock_result(); + confess $v unless $v =~ m{^\-?\d+$}; + return $v; +} =head1 Connection Handling @@ -334,9 +346,30 @@ sub lindex { my ( $self, $key, $index ) = @_; - $self->_sock_result_bulk( 'lindex', $key, $index ); + $self->_sock_result_bulk( 'LINDEX', $key, $index ); } +=head2 lset + + $r->lset( $key, $index, $value ); + +=cut + +sub lset { + my ( $self, $key, $index, $value ) = @_; + $self->_sock_send_bulk( 'LSET', $key, $index, $value ); +} + +=head2 lrem + + $r->lrem( $key, $count, $value ); + +=cut + +sub lrem { + my ( $self, $key, $count, $value ) = @_; + $self->_sock_send_bulk_number( 'LREM', $key, $count, $value ); +} =head1 AUTHOR