The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

EV::Hiredis - Asynchronous redis client using hiredis and EV

SYNOPSIS

use EV::Hiredis;


my $redis = EV::Redis->new;
$redis->connect('127.0.0.1');


# or
my $redis = EV::Redis->new( host => '127.0.0.1' );


# command
$redis->set('foo' => 'bar', sub {
    my ($res, $err) = @_;


    print $res; # OK


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


        print $res; # bar


        $redis->disconnect;
    });
});


# start main loop
EV::run;

DESCRIPTION

EV::Hiredis is a asynchronous client for Redis using hiredis and EV as backend.

This module connected to EV with C-Level interface so that it runs faster.

ANYEVENT INTEGRATION

AnyEvent has a support for EV as its one of backends, so EV::Hiredis can be used in your AnyEvent applications seamlessly.

NO UTF-8 SUPPORT

Unlike other redis modules, this module doesn't support utf-8 string.

This module handle all variables as bytes. You should encode your utf-8 string before passing commands like following:

use Encode;


# set $val
$redis->set(foo => encode_utf8 $val, sub { ... });


# get $val
$redis->get(foo, sub {
    my $val = decode_utf8 $_[0];
});

METHODS

new(%options);

Create new EV::Hiredis instance.

Available %options are:

All parameters are optional.

If parameters about connection (host&port or path) is not passed, you should call connect or connect_unix method by hand to connect to redis-server.

connect($hostname, $port)

connect_unix($path)

Connect to a redis-server for $hostname:$port or $path.

on_connect callback will be called if connection is successful, otherwise on_error callback is called.

command($commands..., $cb->($result, $error))

Do a redis command and return its result by callback.

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

    print $result; # value for key 'foo'
    print $error;  # redis error string, undef if no error
});

If any error is occurred, $error presents the error message and $result is undef. If no error, $error is undef and $result presents response from redis.

NOTE: Alternatively all commands can be called via AUTOLOAD interface.

$redis->command('get', 'foo', sub { ... });

is equivalent to:

$redis->get('foo', sub { ... });

disconnect

Disconnect from redis-server. This method is usable for exiting event loop.

on_error($cb->($errstr))

Set new error callback to the instance.

on_connect($cb->())

Set new connect callback to the instance.

AUTHOR

Daisuke Murase typester@cpan.org

COPYRIGHT AND LICENSE

Copyright (c) 2013 Daisuke Murase All rights reserved.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.