Skip to content
alanhaggai edited this page Sep 10, 2011 · 7 revisions

Using Redis in Mojolicious

Asynchronous using MojoX::Redis

MojoX::Redis can be used for asynchronous communication with Redis.

$redis = MojoX::Redis->new;

$redis->set(test => "test_ok")
->get(test => sub {
    my ($redis, $result) = @_;

    die $redis->error unless defined $result;

    print qq|"result" = "|, $result->[0], qq|"\n|;
    $redis->ioloop->stop;
})->start;

If you are planning to use MojoX::Redis in Mojolicious' daemon mode, create MojoX::Redis instance with ioloop attr:

my $redis = MojoX::Redis->new(ioloop => Mojo::IOLoop->new);

Blocking using Redis

Sometimes a simple, blocking client is enough.

use Mojolicious::Lite;
use Redis;

my $redis = Redis->new;

# This under block is only needed, if your
# connections time out. Check the settings
# of your database.
under sub {
  $redis = Redis->new;
};

get '/' => sub {
  my $self = shift;
  my $counter = $redis->incr('counter');
  $self->render(text => "Counter: $counter!");
};