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

Diff of /lib/Redis.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 38 by dpavlin, Sun Mar 22 18:17:05 2009 UTC revision 47 by dpavlin, Mon Mar 23 11:30:40 2009 UTC
# Line 53  sub new { Line 53  sub new {
53          $self;          $self;
54  }  }
55    
56  sub _sock_result {  sub __sock_result {
57          my $result = <$sock>;          my $result = <$sock>;
58          warn "## result: ",dump( $result ) if $debug;          warn "## result: ",dump( $result ) if $debug;
59          $result =~ s{\r\n$}{} || warn "can't find cr/lf";          $result =~ s{\r\n$}{} || warn "can't find cr/lf";
60          return $result;          return $result;
61  }  }
62    
63  sub _sock_read_bulk {  sub __sock_read_bulk {
64          my $len = <$sock>;          my $len = <$sock>;
65          warn "## bulk len: ",dump($len) if $debug;          warn "## bulk len: ",dump($len) if $debug;
66          return undef if $len eq "nil\r\n";          return undef if $len eq "nil\r\n";
# Line 78  sub _sock_result_bulk { Line 78  sub _sock_result_bulk {
78          my $self = shift;          my $self = shift;
79          warn "## _sock_result_bulk ",dump( @_ ) if $debug;          warn "## _sock_result_bulk ",dump( @_ ) if $debug;
80          print $sock join(' ',@_) . "\r\n";          print $sock join(' ',@_) . "\r\n";
81          _sock_read_bulk();          __sock_read_bulk();
82  }  }
83    
84  sub _sock_result_bulk_list {  sub _sock_result_bulk_list {
# Line 91  sub _sock_result_bulk_list { Line 91  sub _sock_result_bulk_list {
91    
92          my @list = ( 0 .. $size );          my @list = ( 0 .. $size );
93          foreach ( 0 .. $size ) {          foreach ( 0 .. $size ) {
94                  $list[ $_ ] = _sock_read_bulk();                  $list[ $_ ] = __sock_read_bulk();
95          }          }
96    
97          warn "## list = ", dump( @list ) if $debug;          warn "## list = ", dump( @list ) if $debug;
# Line 108  sub _sock_send { Line 108  sub _sock_send {
108          my $self = shift;          my $self = shift;
109          warn "## _sock_send ",dump( @_ ) if $debug;          warn "## _sock_send ",dump( @_ ) if $debug;
110          print $sock join(' ',@_) . "\r\n";          print $sock join(' ',@_) . "\r\n";
111          _sock_result();          __sock_result();
112  }  }
113    
114  sub _sock_send_ok {  sub _sock_send_ok {
# Line 119  sub _sock_send_ok { Line 119  sub _sock_send_ok {
119  }  }
120    
121  sub __sock_send_bulk_raw {  sub __sock_send_bulk_raw {
         my $self = shift;  
122          warn "## _sock_send_bulk ",dump( @_ ) if $debug;          warn "## _sock_send_bulk ",dump( @_ ) if $debug;
123          my $value = pop;          my $value = pop;
124          $value = '' unless defined $value; # FIXME errr? nil?          $value = '' unless defined $value; # FIXME errr? nil?
# Line 127  sub __sock_send_bulk_raw { Line 126  sub __sock_send_bulk_raw {
126  }  }
127    
128  sub _sock_send_bulk {  sub _sock_send_bulk {
129            my $self = shift;
130          __sock_send_bulk_raw( @_ );          __sock_send_bulk_raw( @_ );
131          __sock_ok();          __sock_ok();
132  }  }
133    
134  sub _sock_send_bulk_number {  sub _sock_send_bulk_number {
135            my $self = shift;
136          __sock_send_bulk_raw( @_ );          __sock_send_bulk_raw( @_ );
137          my $v = _sock_result();          my $v = __sock_result();
138          confess $v unless $v =~ m{^\-?\d+$};          confess $v unless $v =~ m{^\-?\d+$};
139          return $v;          return $v;
140  }  }
# Line 185  sub set { Line 186  sub set {
186    
187  sub get {  sub get {
188          my $self = shift;          my $self = shift;
189          $self->_sock_result_bulk('GET', @_);          $self->_sock_result_bulk('GET',@_);
190    }
191    
192    =head2 mget
193    
194      my @values = $r->get( 'foo', 'bar', 'baz' );
195    
196    =cut
197    
198    sub mget {
199            my $self = shift;
200            $self->_sock_result_bulk_list('MGET',@_);
201  }  }
202    
203  =head2 incr  =head2 incr
# Line 257  sub type { Line 269  sub type {
269    
270  sub keys {  sub keys {
271          my ( $self, $glob ) = @_;          my ( $self, $glob ) = @_;
272          return split(/\s/, $self->_sock_result_bulk( 'KEYS', $glob ));          my $keys = $self->_sock_result_bulk( 'KEYS', $glob );
273            return split(/\s/, $keys) if $keys;
274            return () if wantarray;
275  }  }
276    
277  =head2 randomkey  =head2 randomkey
# Line 479  sub sinterstore { Line 493  sub sinterstore {
493    
494  =head2 select  =head2 select
495    
496    $r->select( 1 );    $r->select( $dbindex ); # 0 for new clients
497    
498  =cut  =cut
499    
500  sub select {  sub select {
501          my ($self,$index) = @_;          my ($self,$dbindex) = @_;
502          $self->_sock_send_ok( 'SELECT', $index );          confess dump($dbindex) . 'not number' unless $dbindex =~ m{^\d+$};
503            $self->_sock_send_ok( 'SELECT', $dbindex );
504    }
505    
506    =head2 move
507    
508      $r->move( $key, $dbindex );
509    
510    =cut
511    
512    sub move {
513            my ( $self, $key, $dbindex ) = @_;
514            $self->_sock_send( 'MOVE', $key, $dbindex );
515    }
516    
517    =head2 flushdb
518    
519      $r->flushdb;
520    
521    =cut
522    
523    sub flushdb {
524            my $self = shift;
525            $self->_sock_send_ok('FLUSHDB');
526    }
527    
528    =head2 flushall
529    
530      $r->flushall;
531    
532    =cut
533    
534    sub flushall {
535            my $self = shift;
536            $self->_sock_send_ok('flushall');
537    }
538    
539    =head1 Sorting
540    
541      $r->sort("key BY pattern LIMIT start end GET pattern ASC|DESC ALPHA');
542    
543    =cut
544    
545    sub sort {
546            my ( $self, $sort ) = @_;
547            $self->_sock_result_bulk_list( "SORT $sort" );
548  }  }
549    
550  =head1 AUTHOR  =head1 AUTHOR

Legend:
Removed from v.38  
changed lines
  Added in v.47

  ViewVC Help
Powered by ViewVC 1.1.26