use IO::Socket::INET;
use Data::Dump qw/dump/;
+use Carp qw/confess/;
=head1 NAME
=head2 set
- $r->set( foo => 'bar' );
+ $r->set( foo => 'bar', $new );
=cut
sub set {
- my ( $self, $k, $v ) = @_;
- print $sock "SET $k " . length($v) . "\r\n$v\r\n";
+ my ( $self, $k, $v, $new ) = @_;
+ print $sock ( $new ? "SETNX" : "SET" ) . " $k " . length($v) . "\r\n$v\r\n";
my $ok = <$sock>;
- die dump($ok) unless $ok eq "+OK\r\n";
+ confess dump($ok) unless $ok eq "+OK\r\n";
}
=head2 get
my ( $self, $k ) = @_;
print $sock "GET $k\r\n";
my $len = <$sock>;
+# 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;
}
+=head2 incr
+
+ $r->incr('counter');
+ $r->incr('tripplets', 3);
+
+=cut
+
+sub incr {
+ my ( $self, $key, $value ) = @_;
+ if ( defined $value ) {
+ print $sock "INCRBY $key $value\r\n";
+ } else {
+ print $sock "INCR $key\r\n";
+ }
+ my $count = <$sock>;
+ warn "# $key = $count";
+ return $count;
+}
+
=head1 AUTHOR
Dobrica Pavlinusic, C<< <dpavlin at rot13.org> >>