The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
NAME
    Hiredis::Async - Perl binding for asychronous hiredis API

SYNOPSIS
      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 };
          ...;
      });

DESCRIPTION
    "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.

    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.

    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.

METHODS
  new
    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:

    host
    port

    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.

    addRead
        Start the read watcher.

    delRead
        Stop the read watcher.

    addWrite
        Start the write watcher.

    delRead
        Stop the write watcher.

  Command
    Takes an array ref representing a command to send to Redis and calls a
    callback with the result or error.

  GetFd
    Returns the file descriptor being used to communicate with the Redis
    server.

  HandleRead
    Reads as many bytes from the Redis server as possible without blocking.
    It may call callbacks if results are available.

  HandleWrite
    Write as many bytes to the Redis server as possible without blocking.

INSTALL
    "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.

SEE ALSO
    AnyEvent::Hiredis, Redis, AnyEvent::Redis

REPOSITORY
    <http://github.com/wjackson/hiredis-raw>

AUTHORS
    Whitney Jackson "<whitney@cpan.org>"

    Jonathan Rockway "<jrockway@cpan.org>"

COPYRIGHT & LICENSE
        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.