Skip to content

Using Redis

reezer edited this page · 5 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 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!");
    };
Something went wrong with that request. Please try again.