added memcache to store data in couchbase
authorDobrica Pavlinusic <dpavlin@rot13.org>
Fri, 2 Sep 2011 11:42:52 +0000 (11:42 +0000)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Fri, 2 Sep 2011 11:42:52 +0000 (11:42 +0000)
lib/CloudStore/memcache.pm [new file with mode: 0644]
t/memcache.t [new file with mode: 0755]

diff --git a/lib/CloudStore/memcache.pm b/lib/CloudStore/memcache.pm
new file mode 100644 (file)
index 0000000..bd4be08
--- /dev/null
@@ -0,0 +1,33 @@
+package CloudStore::memcache;
+
+use Cache::Memcached;
+use JSON::XS;
+
+sub new {
+       my ($class) = @_;
+       my $server = new Cache::Memcached {
+               'servers' => [ "127.0.0.1:11211" ],
+               'debug' => 1,
+       #       'compress_threshold' => 10_000,
+       };
+       #$server->set_servers($array_ref);
+       #$server->set_compress_threshold(10_000);
+       $server->enable_compress(0);
+
+       my $self = { server => $server };
+       bless $self, $class;
+
+       return $self;
+}
+
+sub get {
+       my ($self,$k) = @_;
+       decode_json $self->{server}->get( $k );
+}
+
+sub set {
+       my ($self,$k,$v) = @_;
+       $self->{server}->set( $k => encode_json $v );
+}
+
+1;
diff --git a/t/memcache.t b/t/memcache.t
new file mode 100755 (executable)
index 0000000..0747d9d
--- /dev/null
@@ -0,0 +1,30 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+
+use Test::More tests => 3;
+use Data::Dump qw(dump);
+
+use lib 'lib';
+
+use_ok 'CloudStore::memcache';
+
+my $r;
+
+ok( $r = CloudStore::memcache->new, 'server' );
+diag dump($r);
+
+my $data = { foo => 0, bar => 100 };
+
+for ( 0 .. $data->{bar} ) {
+       ok( $r->set( "test$_", $data), "set $_" );
+
+       ok( my $v = $r->get( "test$_" ), "get $_" );
+       diag dump($v);
+
+       is_deeply $v, $data, 'correct';
+
+       $data->{foo}++;
+       $data->{bar}--;
+}
+