/[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

Annotation of /lib/Redis.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 5 - (hide annotations)
Sat Mar 21 22:20:51 2009 UTC (15 years ago) by dpavlin
File size: 2563 byte(s)
setnx
1 dpavlin 1 package Redis;
2    
3     use warnings;
4     use strict;
5    
6 dpavlin 2 use IO::Socket::INET;
7     use Data::Dump qw/dump/;
8 dpavlin 5 use Carp qw/confess/;
9 dpavlin 2
10 dpavlin 1 =head1 NAME
11    
12     Redis - The great new Redis!
13    
14     =cut
15    
16     our $VERSION = '0.01';
17    
18    
19     =head1 SYNOPSIS
20    
21 dpavlin 2 Pure perl bindings for L<http://code.google.com/p/redis/>
22 dpavlin 1
23     use Redis;
24    
25 dpavlin 2 my $r = Redis->new();
26 dpavlin 1
27    
28    
29 dpavlin 2
30 dpavlin 1 =head1 FUNCTIONS
31    
32 dpavlin 2 =head2 new
33 dpavlin 1
34     =cut
35    
36 dpavlin 2 our $sock;
37     my $server = '127.0.0.1:6379';
38    
39     sub new {
40     my $class = shift;
41     my $self = {};
42     bless($self, $class);
43    
44     warn "# opening socket to $server";
45    
46     $sock ||= IO::Socket::INET->new(
47     PeerAddr => $server,
48     Proto => 'tcp',
49     ) || die $!;
50    
51     $self;
52 dpavlin 1 }
53    
54 dpavlin 2 =head1 Connection Handling
55 dpavlin 1
56 dpavlin 2 =head2 quit
57    
58     $r->quit;
59    
60 dpavlin 1 =cut
61    
62 dpavlin 2 sub quit {
63     my $self = shift;
64    
65     close( $sock ) || warn $!;
66 dpavlin 1 }
67    
68 dpavlin 2 =head2 ping
69    
70 dpavlin 3 $r->ping || die "no server?";
71 dpavlin 2
72     =cut
73    
74     sub ping {
75     print $sock "PING\r\n";
76     my $pong = <$sock>;
77     die "ping failed, got ", dump($pong) unless $pong eq "+PONG\r\n";
78     }
79    
80 dpavlin 3 =head1 Commands operating on string values
81    
82     =head2 set
83    
84 dpavlin 5 $r->set( foo => 'bar', $new );
85 dpavlin 3
86     =cut
87    
88     sub set {
89 dpavlin 5 my ( $self, $k, $v, $new ) = @_;
90     print $sock ( $new ? "SETNX" : "SET" ) . " $k " . length($v) . "\r\n$v\r\n";
91 dpavlin 3 my $ok = <$sock>;
92 dpavlin 5 confess dump($ok) unless $ok eq "+OK\r\n";
93 dpavlin 3 }
94    
95     =head2 get
96    
97     my $value = $r->get( 'foo' );
98    
99     =cut
100    
101     sub get {
102     my ( $self, $k ) = @_;
103     print $sock "GET $k\r\n";
104     my $len = <$sock>;
105 dpavlin 4 # warn "# len: ",dump($len);
106     return undef if $len eq "nil\r\n";
107 dpavlin 3 my $v;
108     read($sock, $v, $len) || die $!;
109 dpavlin 4 # warn "# v: ",dump($v);
110     my $crlf;
111     read($sock, $crlf, 2); # skip cr/lf
112 dpavlin 3 return $v;
113     }
114    
115 dpavlin 4
116    
117 dpavlin 1 =head1 AUTHOR
118    
119     Dobrica Pavlinusic, C<< <dpavlin at rot13.org> >>
120    
121     =head1 BUGS
122    
123     Please report any bugs or feature requests to C<bug-redis at rt.cpan.org>, or through
124     the web interface at L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Redis>. I will be notified, and then you'll
125     automatically be notified of progress on your bug as I make changes.
126    
127    
128    
129    
130     =head1 SUPPORT
131    
132     You can find documentation for this module with the perldoc command.
133    
134     perldoc Redis
135    
136    
137     You can also look for information at:
138    
139     =over 4
140    
141     =item * RT: CPAN's request tracker
142    
143     L<http://rt.cpan.org/NoAuth/Bugs.html?Dist=Redis>
144    
145     =item * AnnoCPAN: Annotated CPAN documentation
146    
147     L<http://annocpan.org/dist/Redis>
148    
149     =item * CPAN Ratings
150    
151     L<http://cpanratings.perl.org/d/Redis>
152    
153     =item * Search CPAN
154    
155     L<http://search.cpan.org/dist/Redis>
156    
157     =back
158    
159    
160     =head1 ACKNOWLEDGEMENTS
161    
162    
163     =head1 COPYRIGHT & LICENSE
164    
165     Copyright 2009 Dobrica Pavlinusic, all rights reserved.
166    
167     This program is free software; you can redistribute it and/or modify it
168     under the same terms as Perl itself.
169    
170    
171     =cut
172    
173     1; # End of Redis

  ViewVC Help
Powered by ViewVC 1.1.26