Hiredis::Async - Perl binding for asychronous hiredis API
use Hiredis::Async; Hiredis::Async->new( host => '127.0.0.1', port => 6379, # callbacks (optional) addRead => sub { # add read event watcher } delRead => sub { # delete read event watcher }, addWrite => sub { # add write event watcher }, delWrite => sub { # delete write event watcher }, ); $redis->Command(['PING'], sub { my $result = shift; say "the server said: $result"; # PONG }); $redis->Command([qw/LPUSH key value/], sub { my ($result, $err) = @_; ...; }); $redis->Command([qw/LRANGE key 0 2/], sub { my ($result, $err) = @_; my @list = @{ $result }; ...; });
Hiredis::Async contains Perl binding for the asynchronous features of the hiredis C library (https://github.com/antirez/hiredis). Its intended purpose is to allow event loops to easily take advantage of the hiredis async features. If you just want to use these features and don't care about event loop integration you should check out AnyEvent::Hiredis instead.
Hiredis::Async
The main entry point Command is how you interact with the Redis server. It takes two arguments: an array ref containing the Redis command and its arguments, and a callback to call with the reply when it has arrived.
Command
The other commands deal with I/O to and from the server. GetFd returns the socket that's connected to the server. You can use this fd to poll for readablity or writability with an event loop. When this fd is readable, call HandleRead. When the fd is writable and hiredis indicates there are writes to perform, call HandleWrite. Note that under normal circumstances the fd will be writable most of the time. So it's important to enable the callback only when there are outstanding writes. Otherwise your program will use 100% CPU even when idle. Use the available callbacks to determine when there are outstanding writes.
Example:
Hiredis::Async->new( host => '127.0.0.1', port => 6379, # callbacks (optional) addRead => sub { # add read event watcher } delRead => sub { # delete read event watcher }, addWrite => sub { # add write event watcher }, delWrite => sub { # delete write event watcher }, );
Takes the following named arguments:
The remaining constructor arguments are callbacks used to handle various hiredis events. They're all passed the Redis connection file descriptor as their one and only argument.
Start the read watcher.
Stop the read watcher.
Start the write watcher.
Stop the write watcher.
Takes an array ref representing a command to send to Redis and calls a callback with the result or error.
Returns the file descriptor being used to communicate with the Redis server.
Reads as many bytes from the Redis server as possible without blocking. It may call callbacks if results are available.
Write as many bytes to the Redis server as possible without blocking.
Hiredis::Async needs the underlying hiredis C library. Install it from your package management system or from source: https://github.com/antirez/hiredis . If you install hiredis to anywhere other than /usr/local or /usr then you'll need to set the environment variable HIREDIS_PREFIX before installing this module.
hiredis
AnyEvent::Hiredis, Redis, AnyEvent::Redis
http://github.com/wjackson/hiredis-raw
Whitney Jackson <whitney@cpan.org>
<whitney@cpan.org>
Jonathan Rockway <jrockway@cpan.org>
<jrockway@cpan.org>
Copyright (c) 2011 Whitney Jackson, Jonathan Rockway. All rights reserved This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
To install Hiredis::Raw, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Hiredis::Raw
CPAN shell
perl -MCPAN -e shell install Hiredis::Raw
For more information on module installation, please visit the detailed CPAN module installation guide.