Deprecated.
NAME
Mojo::Redis - DEPRECATED Redis client
DESCRIPTION
Mojo::Redis is replaced by Mojo::Redis2.
THIS MODULE IS NO LONGER MAINTAINED AND WILL BE REPLACED BY A COMPLETELY NEW API DURING 2015.
The new API is available in Mojo::Redis2. Some time during 2015, this module will be completely replaced by the code from Mojo::Redis2.
YOU SHOULD NOT USE THIS MODULE. THE RISK OF MEMORY LEAKS AND MISSING OUT ON ERRORS IS INEVITABLE.
The exact date for replacement is not yet set, but when it's replaced your existing Mojo::Redis code will break.
REPLACE Mojo::Redis WITH Mojo::Redis2 NOW.
EVENTS
blpop
$cb = $redis->on(blpop => @list_names => sub {
my($redis, $err, $data, $list_name) = @_;
warn "[REDIS BLPOP] Got ($data) from $list_name\n";
});
This is a special event which allow you to do recurring "blpop" without blocking the current Mojo::Redis object. Recurring means that once the callback has handled the data, it will issue a new BLPOP.
One of the commands below is required to stop the BLPOP loop:
$redis->on(message => @channels);
$redis->on(message => @channels => $cb);
brpop
See "blpop".
error
$redis->on(error => sub {
my($redis, $error) = @_;
warn "[REDIS ERROR] $error\n";
});
Emitted if error occurred. Called before commands callbacks.
close
$redis->on(close => sub {
my($redis) = @_;
warn "[REDIS DISCONNECT]\n";
});
Emitted when the connection to the server gets closed.
message
$redis->on(message => @channels => sub {
my($redis, $err, $message, $channel) = @_;
warn "[REDIS PUBSUB] Got ($message) from $channel\n";
});
This is a special event which allow you to "subscribe" to messages directly in the current Mojo::Redis object instead of using a new Mojo::Redis::Subscription object.
To unsubscribe you need to do one of these:
$redis->on(message => @channels);
$redis->on(message => @channels => $cb);
ATTRIBUTES
Mojo::Redis implements the following attributes.
connected
encoding
$encoding = $redis->encoding;
$redis = $redis->encoding('UTF-8');
Encoding used for stored data, defaults to UTF-8
.
ioloop
protocol
protocol_redis
use Protocol::Redis::XS;
$redis->protocol_redis("Protocol::Redis::XS");
Protocol::Redis implementation' constructor for parsing. By default Protocol::Redis will be used. Parser library must support APIv1.
Using Protocol::Redis::XS instead of default choice can speedup parsing.
server
$server = $redis->server;
$redis = $redis->server('127.0.0.1:6379');
$redis = $redis->server('redis://anything:PASSWORD@127.0.0.1:6379/DB_INDEX');
Redis
server connection string, defaults to "127.0.0.1:6379". The latter can be used if you want Mojo::Redis to automatically run "auth" with PASSWORD
and/or "select" with DB_INDEX
on connect. Both AUTH and DB_INDEX are optional.
timeout
$seconds = $redis->timeout;
$redis = $redis->timeout(100);
Maximum amount of time in seconds a connection can be inactive before being dropped, defaults to 0
- meaning no timeout.
METHODS
connect
$redis = $redis->connect;
Connect to Redis
server.
disconnect
$redis = $self->disconnect;
Used to disconnect from the server. This method is automatically called when this object goes out of scope.
execute
$redis = $redis->execute("ping" => sub {
my ($redis, $result) = @_;
# Process $result
});
$redis->execute(lrange => "test", 0, -1 => sub {...});
$redis->execute(set => test => "test_ok");
$redis->execute(
[lrange => "test", 0, -1],
[get => "test"],
[hmset => foo => { one => 1, two => 2 }],
sub {
my($redis, $lrange, $get, $hmset) = @_;
# ...
},
);
Execute specified command on Redis
server. If error occurred during request $result will be set to undef, error string can be obtained with the "error" event.
on
Same as "on" in Mojo::EventEmitter, except it allows special events such as "blpop", "brpop" and "message".
once
Same as "once" in Mojo::EventEmitter, except it allows special events such as "blpop", "brpop" and "message".
psubscribe
Subscribes to channels matching the given patterns.
# Subscribes to foo, foobar, foo.whaz, etc.
my $psub = $redis->psubscribe('foo*');
$psub->on(message => sub {
my ($self, $msg, $channel, $pattern) = @_; # 'hi!', 'foo.roo', 'foo*'
});
$redis->publish('foo.roo' => 'hi!');
"psubscribe" has the same interface options and capabilities as "subscribe".
subscribe
It's possible to subscribe in two ways:
$redis = $redis->subscribe('foo','bar' => sub {
my ($redis, $data) = @_;
});
The above code will overtake the current connection (if any) and put this object into a pure subscribe mode.
my $sub = $redis->subscribe('foo','bar');
$sub->on(data => sub {
my ($sub, $data) = @_;
});
Opens up a new connection that subscribes to the given pubsub channels. Returns an instance of Mojo::Redis::Subscription. The existing $redis
object can still be used to "get" data as expected.
unsubscribe
The opposite as "on". See also "unsubscribe" in Mojo::EventEmitter.
SUPPORT
You can contact the developers "marcus" and "batman" on IRC: irc://irc.perl.org:6667/#mojo (#mojo on irc.perl.org)
AUTHOR
Sergey Zasenko, undef@cpan.org
.
Forked from MojoX::Redis and updated to new IOLoop API by Marcus Ramberg mramberg@cpan.org
and Jan Henning Thorsen jhthorsen@cpan.org
.
COPYRIGHT AND LICENSE
Copyright (C) 2010-2011, Sergey Zasenko (C) 2012, Marcus Ramberg
This program is free software, you can redistribute it and/or modify it under the terms of the Artistic License version 2.0.