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

AnyEvent::Redis - Non-blocking Redis client

SYNOPSIS

  use AnyEvent::Redis;

  my $redis = AnyEvent::Redis->new(
      host => '127.0.0.1',
      port => 6379,
      on_error => sub { warn @_ },
  );

  # callback based
  $redis->set( 'foo'=> 'bar', sub { warn "SET!" } );
  $redis->get( 'foo', sub { my $value = shift } );

  my ($key, $value) = ('list_key', 123);
  $redis->lpush( $key, $value );
  $redis->lpop( $key, sub { my $value = shift });

  # condvar based
  my $cv = $redis->lpop( $key );
  $cv->cb(sub { my $value = $_[0]->recv });

DESCRIPTION

AnyEvent::Redis is a non-blocking Redis client using AnyEvent.

METHODS

All methods supported by your version of Redis should be supported.

Normal commands

There are two alternative approaches for handling results from commands.

  • AnyEvent::CondVar based:

      my $cv = $redis->command(
        # arguments to command
      );
    
      $cv->cb(sub {
        my($cv) = @_;
        my($result, $err) = $cv->recv
      });
  • Callback:

      $redis->command(
        # arguments,
        sub {
          my($result, $err) = @_;
        });

    (Callback is a wrapper around the $cv approach.)

Subscriptions

The subscription methods (subscribe and psubscribe) must be used with a callback:

  my $cv = $redis->subscribe("test", sub {
    my($message, $channel[, $actual_channel]) = @_;
    # ($actual_channel is provided for pattern subscriptions.)
  });

The $cv condition will be met on unsubscribing from the channel.

Due to limitations of the Redis protocol the only valid commands on a connection with an active subscription are subscribe and unsubscribe commands.

Common methods

  • get

  • set

  • hset

  • hget

  • lpush

  • lpop

The Redis command reference (http://code.google.com/p/redis/wiki/CommandReference) lists all commands Redis supports.

REQUIREMENTS

This requires Redis >= 1.2.

COPYRIGHT

Tatsuhiko Miyagawa <miyagawa@bulknews.net> 2009-

LICENSE

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

AUTHORS

Tatsuhiko Miyagawa

David Leadbeater

Chia-liang Kao

franck cuny

Lee Aylward

Joshua Barratt

Jeremy Zawodn

Leon Brocard

SEE ALSO

Redis, AnyEvent