/[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 2 by dpavlin, Sat Mar 21 21:25:52 2009 UTC revision 11 by dpavlin, Sat Mar 21 23:09:48 2009 UTC
# Line 5  use strict; Line 5  use strict;
5    
6  use IO::Socket::INET;  use IO::Socket::INET;
7  use Data::Dump qw/dump/;  use Data::Dump qw/dump/;
8    use Carp qw/confess/;
9    
10  =head1 NAME  =head1 NAME
11    
# Line 50  sub new { Line 51  sub new {
51          $self;          $self;
52  }  }
53    
54    sub _sock_result {
55            my $result = <$sock>;
56            warn "# result: ",dump( $result );
57            $result =~ s{\r\n$}{} || warn "can't find cr/lf";
58            return $result;
59    }
60    
61  =head1 Connection Handling  =head1 Connection Handling
62    
63  =head2 quit  =head2 quit
# Line 66  sub quit { Line 74  sub quit {
74    
75  =head2 ping  =head2 ping
76    
77          $r->ping || die "no server?";    $r->ping || die "no server?";
78    
79  =cut  =cut
80    
# Line 76  sub ping { Line 84  sub ping {
84          die "ping failed, got ", dump($pong) unless $pong eq "+PONG\r\n";          die "ping failed, got ", dump($pong) unless $pong eq "+PONG\r\n";
85  }  }
86    
87    =head1 Commands operating on string values
88    
89    =head2 set
90    
91      $r->set( foo => 'bar', $new );
92    
93    =cut
94    
95    sub set {
96            my ( $self, $k, $v, $new ) = @_;
97            print $sock ( $new ? "SETNX" : "SET" ) . " $k " . length($v) . "\r\n$v\r\n";
98            my $ok = <$sock>;
99            confess dump($ok) unless $ok eq "+OK\r\n";
100    }
101    
102    =head2 get
103    
104      my $value = $r->get( 'foo' );
105    
106    =cut
107    
108    sub get {
109            my ( $self, $k ) = @_;
110            print $sock "GET $k\r\n";
111            my $len = <$sock>;
112    #       warn "# len: ",dump($len);
113            return undef if $len eq "nil\r\n";
114            my $v;
115            read($sock, $v, $len) || die $!;
116    #       warn "# v: ",dump($v);
117            my $crlf;
118            read($sock, $crlf, 2); # skip cr/lf
119            return $v;
120    }
121    
122    =head2 incr
123    
124      $r->incr('counter');
125      $r->incr('tripplets', 3);
126    
127    =cut
128    
129            
130    
131    sub incr {
132            my ( $self, $key, $value ) = @_;
133            if ( defined $value ) {
134                    print $sock "INCRBY $key $value\r\n";
135            } else {
136                    print $sock "INCR $key\r\n";
137            }
138            _sock_result();
139    }
140    
141    =head2 decr
142    
143      $r->decr('counter');
144      $r->decr('tripplets', 3);
145    
146    =cut
147    
148    sub decr {
149            my ( $self, $key, $value ) = @_;
150            if ( defined $value ) {
151                    print $sock "DECRBY $key $value\r\n";
152            } else {
153                    print $sock "DECR $key\r\n";
154            }
155            _sock_result();
156    }
157    
158    =head2 exists
159    
160      $r->exists( 'key' ) && print "got key!";
161    
162    =cut
163    
164    sub exists {
165            my ( $self, $key ) = @_;
166            print $sock "EXISTS $key\r\n";
167            _sock_result();
168    }
169    
170    =head2 del
171    
172      $r->del( 'key' ) || warn "key doesn't exist";
173    
174    =cut
175    
176    sub del {
177            my ( $self, $key ) = @_;
178            print $sock "DEL $key\r\n";
179            _sock_result();
180    }
181    
182    =head2 type
183    
184      $r->type( 'key' ); # = string
185    
186    =cut
187    
188    sub type {
189            my ( $self, $key ) = @_;
190            print $sock "type $key\r\n";
191            _sock_result();
192    }
193    
194  =head1 AUTHOR  =head1 AUTHOR
195    
196  Dobrica Pavlinusic, C<< <dpavlin at rot13.org> >>  Dobrica Pavlinusic, C<< <dpavlin at rot13.org> >>

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

  ViewVC Help
Powered by ViewVC 1.1.26