+=head2 llen
+
+ $r->llen( $key );
+
+=cut
+
+sub llen {
+ my ( $self, $key ) = @_;
+ $self->_sock_send( 'LLEN', $key );
+}
+
+=head2 lrange
+
+ my @list = $r->lrange( $key, $start, $end );
+
+=cut
+
+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;
+}
+
+=head2 ltrim
+
+ my $ok = $r->ltrim( $key, $start, $end );
+
+=cut
+
+sub ltrim {
+ my ( $self, $key, $start, $end ) = @_;
+ $self->_sock_send_ok( 'LTRIM', $key, $start, $end );
+}
+
+=head2 lindex
+
+ $r->lindex( $key, $index );
+
+=cut
+
+sub lindex {
+ my ( $self, $key, $index ) = @_;
+ $self->_sock_result_bulk( 'lindex', $key, $index );
+}
+
+