if ($self->{_r}) {
return $self->{_r};
}
- my $r = Redis->new(server => $self->{options}->{host});
+ my $r = Redis->new(server => $self->{conf}->{host});
$r->connect;
$self->{_r} = $r;
return $r;
sub _quit {
my $self = shift;
- return if !$self->{options}->{always_disconnect};
+ return if !$self->{conf}->{always_disconnect};
if ($self->{_multi}) {
return;
my $value = $self->get($key);
- if ($value) {
+ if ($value && !$self->{test_mode}) {
# cache hit!
return $value;
}
sub time {
my $self = shift;
+
my $r = $self->_connect;
my $result = $r->time;
$self->_quit;
sub hexists {
my ($self, $key, $field) = @_;
+
my $r = $self->_connect;
my $result = $r->hexists($key, $field);
$self->_quit;
sub hincrby {
my ($self, $key, $field, $increment) = @_;
+
my $r = $self->_connect;
my $result = $r->hincrby($key, $field, $increment);
$self->_quit;
sub hset {
my ($self, $key, $field, $value, @rest) = @_;
+
my $option = {@rest};
my $r = $self->_connect;
my $result = $r->hset($key, $field, $self->_encode($value, $option->{scalar}));
sub hget {
my ($self, $key, $field) = @_;
+ return if $self->{test_mode};
+
my $r = $self->_connect;
my $result = $r->hget($key, $field);
$self->_quit;
if ($result) {
return $self->_decode($result);
} else {
- return undef;
+ return;
}
}
sub get {
my $self = shift;
my $key = shift;
+
+ return if $self->{test_mode};
+
my $r = $self->_connect;
my $result = $r->get($key);
$self->_quit;
if ($result) {
return $self->_decode($result);
} else {
- return undef;
+ return;
}
}
sub register {
my ($self, $app, $conf) = @_;
- my $kvs_opts = $app->config->{KeyValueStore};
- my $opts = $conf->{options} || {};
- $self->{options} = {%$opts, %$kvs_opts};
+ my $opts = $app->config->{KeyValueStore} || {};
+ $self->{conf} = {%$conf, %$opts};
+ if ($self->{conf}->{test_mode}) {
+ # if test_mode == 1, already yield cache miss
+ $self->{test_mode} = 1;
+ }
+
$self->{app} = $app;
$app->helper(kvs => sub { state $kvs = $self; });
}
return if !defined $data;
+ if ($self->{test_mode}) {
+ $self->_del($key);
+ return;
+ }
+
if (!defined $data->{expire}) {
$self->_del($key);
return;
sub register {
my ($self, $app, $conf) = @_;
- my $opts = $app->config->{Cache} || {};
+ my $opts = $app->config->{MemoryCache} || {};
+ $self->{conf} = {%$conf, %$opts};
+
+ if ($self->{conf}->{test_mode}) {
+ # if test_mode == 1, already yield cache miss
+ $self->{test_mode} = 1;
+ }
+
$self->{app} = $app;
$self->{max_keys} = $opts->{max_keys} || 1000;
$self->{_cache} = Mojo::Cache->new(max_keys => $self->{max_keys});