/[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 11 by dpavlin, Sat Mar 21 23:09:48 2009 UTC revision 20 by dpavlin, Sun Mar 22 09:51:34 2009 UTC
# Line 58  sub _sock_result { Line 58  sub _sock_result {
58          return $result;          return $result;
59  }  }
60    
61    sub _sock_result_bulk {
62            my $len = <$sock>;
63            warn "# len: ",dump($len);
64            return undef if $len eq "nil\r\n";
65            my $v;
66            read($sock, $v, $len) || die $!;
67            warn "# v: ",dump($v);
68            my $crlf;
69            read($sock, $crlf, 2); # skip cr/lf
70            return $v;
71    }
72    
73    sub _sock_ok {
74            my $ok = <$sock>;
75            confess dump($ok) unless $ok eq "+OK\r\n";
76    }
77    
78    sub _sock_send {
79            my $self = shift;
80            print $sock join(' ',@_) . "\r\n";
81            _sock_result();
82    }
83    
84    sub _sock_send_bulk {
85            my ( $self, $command, $key, $value ) = @_;
86            print $sock "$command $key " . length($value) . "\r\n$value\r\n";
87            _sock_ok();
88    }
89    
90    
91  =head1 Connection Handling  =head1 Connection Handling
92    
93  =head2 quit  =head2 quit
# Line 93  sub ping { Line 123  sub ping {
123  =cut  =cut
124    
125  sub set {  sub set {
126          my ( $self, $k, $v, $new ) = @_;          my ( $self, $key, $value, $new ) = @_;
127          print $sock ( $new ? "SETNX" : "SET" ) . " $k " . length($v) . "\r\n$v\r\n";          $self->_sock_send_bulk( "SET" . ( $new ? 'NX' : '' ), $key, $value );
         my $ok = <$sock>;  
         confess dump($ok) unless $ok eq "+OK\r\n";  
128  }  }
129    
130  =head2 get  =head2 get
# Line 108  sub set { Line 136  sub set {
136  sub get {  sub get {
137          my ( $self, $k ) = @_;          my ( $self, $k ) = @_;
138          print $sock "GET $k\r\n";          print $sock "GET $k\r\n";
139          my $len = <$sock>;          _sock_result_bulk();
 #       warn "# len: ",dump($len);  
         return undef if $len eq "nil\r\n";  
         my $v;  
         read($sock, $v, $len) || die $!;  
 #       warn "# v: ",dump($v);  
         my $crlf;  
         read($sock, $crlf, 2); # skip cr/lf  
         return $v;  
140  }  }
141    
142  =head2 incr  =head2 incr
# Line 187  sub del { Line 207  sub del {
207    
208  sub type {  sub type {
209          my ( $self, $key ) = @_;          my ( $self, $key ) = @_;
210          print $sock "type $key\r\n";          print $sock "TYPE $key\r\n";
211            _sock_result();
212    }
213    
214    =head1 Commands operating on the key space
215    
216    =head2 keys
217    
218      my @keys = $r->keys( '*glob_pattern*' );
219    
220    =cut
221    
222    sub keys {
223            my ( $self, $glob ) = @_;
224            print $sock "KEYS $glob\r\n";
225            return split(/\s/, _sock_result_bulk());
226    }
227    
228    =head2 randomkey
229    
230      my $key = $r->randomkey;
231    
232    =cut
233    
234    sub randomkey {
235            my ( $self ) = @_;
236            print $sock "RANDOMKEY\r\n";
237            _sock_result();
238    }
239    
240    =head2 rename
241    
242      my $ok = $r->rename( 'old-key', 'new-key', $new );
243    
244    =cut
245    
246    sub rename {
247            my ( $self, $old, $new, $nx ) = @_;
248            print $sock "RENAME" . ( $nx ? 'NX' : '' ) . " $old $new\r\n";
249            _sock_ok();
250    }
251    
252    =head2 dbsize
253    
254      my $nr_keys = $r->dbsize;
255    
256    =cut
257    
258    sub dbsize {
259            my ( $self ) = @_;
260            print $sock "DBSIZE\r\n";
261          _sock_result();          _sock_result();
262  }  }
263    
264    =head1 Commands operating on lists
265    
266    =head2 rpush
267    
268      $r->rpush( $key, $value );
269    
270    =cut
271    
272    sub rpush {
273            my ( $self, $key, $value ) = @_;
274            $self->_sock_send_bulk('RPUSH', $key, $value);
275    }
276    
277    =head2 lpush
278    
279      $r->lpush( $key, $value );
280    
281    =cut
282    
283    sub lpush {
284            my ( $self, $key, $value ) = @_;
285            $self->_sock_send_bulk('LPUSH', $key, $value);
286    }
287    
288    =head2 llen
289    
290      $r->llen( $key );
291    
292    =cut
293    
294    sub llen {
295            my ( $self, $key ) = @_;
296            $self->_sock_send( 'llen', $key );
297    }
298    
299  =head1 AUTHOR  =head1 AUTHOR
300    
301  Dobrica Pavlinusic, C<< <dpavlin at rot13.org> >>  Dobrica Pavlinusic, C<< <dpavlin at rot13.org> >>

Legend:
Removed from v.11  
changed lines
  Added in v.20

  ViewVC Help
Powered by ViewVC 1.1.26