NAME
Net::Async::Redis - talk to Redis servers via IO::Async
SYNOPSIS
use Net::Async::Redis;
use IO::Async::Loop;
my $loop = IO::Async::Loop->new;
$loop->add(my $redis = Net::Async::Redis->new);
$redis->connect->then(sub {
$redis->get('some_key')
})->then(sub {
my $value = shift;
return Future->done($value) if $value;
$redis->set(some_key => 'some_value')
})->on_done(sub {
print "Value: " . shift;
})->get;
# ... or with Future::AsyncAwait
await $redis->connect;
my $value = await $redis->get('some_key');
$value ||= await $redis->set(some_key => 'some_value');
print "Value: $value";
DESCRIPTION
See Net::Async::Redis::Commands for the full list of commands.
METHODS
NOTE: For a full list of the Redis methods supported by this module, please see Net::Async::Redis::Commands.
METHODS - Subscriptions
See https://redis.io/topics/pubsub for more details on this topic. There's also more details on the internal implementation in Redis here: https://making.pusher.com/redis-pubsub-under-the-hood/.
psubscribe
Subscribes to a pattern.
subscribe
Subscribes to one or more channels.
Resolves to a Net::Async::Redis::Subscription instance.
Example:
# Subscribe to 'notifications' channel,
# print the first 5 messages, then unsubscribe
$redis->subscribe('notifications')
->then(sub {
my $sub = shift;
$sub->map('payload')
->take(5)
->say
->completion
})->then(sub {
$redis->unsubscribe('notifications')
})->get
METHODS - Transactions
multi
Executes the given code in a Redis MULTI
transaction.
This will cause each of the requests to be queued, then executed in a single atomic transaction.
Example:
$redis->multi(sub {
my $tx = shift;
$tx->incr('some::key')->on_done(sub { print "Final value for incremented key was " . shift . "\n"; });
$tx->set('other::key => 'test data')
})->then(sub {
my ($success, $failure) = @_;
return Future->fail("Had $failure failures, expecting everything to succeed") if $failure;
print "$success succeeded\m";
return Future->done;
})->retain;
METHODS - Generic
keys
watch_keyspace
connect
on_message
Called for each incoming message.
Passes off the work to "handle_pubsub_message" or the next queue item, depending on whether we're dealing with subscriptions at the moment.
stream
Represents the IO::Async::Stream instance for the active Redis connection.
pipeline_depth
Number of requests awaiting responses before we start queuing. This defaults to an arbitrary value of 100 requests.
Note that this does not apply when in transaction (MULTI
) mode.
See https://redis.io/topics/pipelining for more details on this concept.
METHODS - Deprecated
This are still supported, but no longer recommended.
METHODS - Internal
SEE ALSO
Some other Redis implementations on CPAN:
Mojo::Redis2 - nonblocking, using the Mojolicious framework, actively maintained
AUTHOR
Tom Molesworth <TEAM@cpan.org>
LICENSE
Copyright Tom Molesworth 2015-2017. Licensed under the same terms as Perl itself.