Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
asynchronous Redis client based on Mojo
Perl
branch: master
Failed to load latest commit information.
lib/MojoX docs updated
t fixed to work with latest mojo
.gitignore git ignore MYMETA files
.perltidyrc Used perltidy
Changes docs updated
LICENSE Version 0.2 released
MANIFEST.SKIP docs updated
Makefile.PL use latest IOLoop API
README.pod docs updated

README.pod

NAME

MojoX::Redis - asynchronous Redis client for Mojolicious.

SYNOPSIS

    use MojoX::Redis;

    my $redis = MojoX::Redis->new(server => '127.0.0.1:6379');

    # Execute some commands
    $redis->ping(
        sub {
            my ($redis, $res) = @_;

            if ($res) {
                print "Got result: ", $res->[0], "\n";
            }
            else {
                print "Error: ", $redis->error, "\n";
            }
        }
    );

    # Work with keys
    $redis->set(key => 'value');

    $redis->get(
        key => sub {
            my ($redis, $res) = @_;

            print "Value of 'key' is $res->[0]\n";
        }
    );


    # Cleanup connection
    $redis->quit(sub { shift->stop });

    # Start IOLoop (in case it is not started yet)
    $redis->start;

Create new Mojo::IOLoop instance if you need to get blocked in a Mojolicious application.

    use Mojolicious::Lite;
    use MojoX::Redis;

    get '/' => sub {
        my $self = shift;

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

        my $value;

        $redis->set(foo => 'bar')->get(
            foo => sub {
                my ($redis, $result) = @_;

                $redis->quit->stop;

                return app->log->error($redis->error) unless $result;

                $value = $result->[0];
            }
        )->start;

        $self->render(text => qq(Foo value is "$value"));
    };

    app->start;

DESCRIPTION

MojoX::Redis is an asynchronous client to Redis for Mojo.

ATTRIBUTES

MojoX::Redis implements the following attributes.

server

    my $server = $redis->server;
    $redis     = $redis->server('127.0.0.1:6379');

Redis server connection string, defaults to '127.0.0.1:6379'.

ioloop

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

Loop object to use for io operations, by default a Mojo::IOLoop singleton object will be used.

timeout

    my $timeout = $redis->timeout;
    $redis      = $redis->timeout(100);

Maximum amount of time in seconds a connection can be inactive before being dropped, defaults to 300.

encoding

    my $encoding = $redis->encoding;
    $redis       = $redis->encoding('UTF-8');

Encoding used for stored data, defaults to UTF-8.

protocol_redis

    use Protocol::Redis::XS;
    $redis->protocol_redis("Protocol::Redis::XS");

Protocol::Redis implementation' constructor for parsing. By default Protocol::Redis will be used. Parser library must support APIv1.

Using Protocol::Redis::XS instead of default choice can speedup parsing.

METHODS

MojoX::Redis supports Redis' methods.

    $redis->set(key => 'value);
    $redis->get(key => sub { ... });

For more details take a look at execute method.

Also MojoX::Redis implements the following ones.

connect

    $redis = $redis->connect;

Connect to Redis server.

execute

    $redis = $redis->execute("ping" => sub{
        my ($redis, $result) = @_;

        # Process result
    });
    $redis->execute(lrange => ["test", 0, -1] => sub {...});
    $redis->execute(set => [test => "test_ok"]);

Execute specified command on Redis server. If error occured during request $result will be set to undef, error string can be obtained with $redis->error.

error

    $redis->execute("ping" => sub {
        my ($redis, $result) = @_;
        die $redis->error unless defined $result;
    });

Returns error occured during command execution. Note that this method returns error code just from current command and can be used just in callback.

on_error

    $redis->on_error(sub{
        my $redis = shift;
        warn 'Redis error ', $redis->error, "\n";
    });

Executes if error occured. Called before commands callbacks.

start

    $redis->start;

Starts IOLoop. Shortcut for $redis->ioloop->start;

SEE ALSO

Mojo::Redis2, Protocol::Redis

AUTHOR

Sergey Zasenko, undef@cpan.org.

CREDITS

Marcus Ramberg (marcusramberg)

COPYRIGHT AND LICENSE

Copyright (C) 2010-2015, Sergey Zasenko

This program is free software, you can redistribute it and/or modify it under the terms of the Artistic License version 2.0.

Something went wrong with that request. Please try again.