NAME

Mojo::Redis - Redis driver based on Mojo::IOLoop

SYNOPSIS

Blocking

use Mojo::Redis;
my $redis = Mojo::Redis->new;
$redis->db->set(foo => 42);
$redis->db->expire(foo => 600);
warn $redis->db->get('foo');

Promises

$redis->db->get_p("mykey")->then(sub {
  print "mykey=$_[0]\n";
})->catch(sub {
  warn "Could not fetch mykey: $_[0]";
})->wait;

Pipelining

Pipelining is built into the API by sending a lot of commands and then use "all" in Mojo::Promise to wait for all the responses.

Mojo::Promise->all(
  $db->set_p($key, 10),
  $db->incrby_p($key, 9),
  $db->incr_p($key),
  $db->get_p($key),
  $db->incr_p($key),
  $db->get_p($key),
)->then(sub {
  @res = map {@$_} @_;
})->wait;

DESCRIPTION

Mojo::Redis is a Redis driver that use the Mojo::IOLoop, which makes it integrate easily with the Mojolicious framework.

It tries to mimic the same interface as Mojo::Pg, Mojo::mysql and Mojo::SQLite, but the methods for talking to the database vary.

This module is in no way compatible with the 1.xx version of Mojo::Redis and this version also tries to fix a lot of the confusing methods in Mojo::Redis2 related to pubsub.

This module is currently EXPERIMENTAL, and bad design decisions will be fixed without warning. Please report at https://github.com/jhthorsen/mojo-redis/issues if you find this module useful, annoying or if you simply find bugs. Feedback can also be sent to jhthorsen@cpan.org.

EVENTS

connection

$cb = $redis->on(connection => sub { my ($redis, $connection) = @_; });

Emitted when Mojo::Redis::Connection connects to the Redis.

ATTRIBUTES

encoding

$str   = $redis->encoding;
$redis = $redis->encoding("UTF-8");

The value of this attribute will be passed on to "encoding" in Mojo::Redis::Connection when a new connection is created. This means that updating this attribute will not change any connection that is in use.

Default value is "UTF-8".

max_connections

$int   = $redis->max_connections;
$redis = $redis->max_connections(5);

Maximum number of idle database handles to cache for future use, defaults to 5. (Default is subject to change)

protocol_class

$str   = $redis->protocol_class;
$redis = $redis->protocol_class("Protocol::Redis::XS");

Default to Protocol::Redis::XS if the optional module is available and at least version 0.06, or falls back to Protocol::Redis::Faster.

pubsub

$pubsub = $redis->pubsub;

Lazy builds an instance of Mojo::Redis::PubSub for this object, instead of returning a new instance like "db" does.

url

$url   = $redis->url;
$redis = $redis->url(Mojo::URL->new("redis://localhost/3"));

Holds an instance of Mojo::URL that describes how to connect to the Redis server.

METHODS

db

$db = $redis->db;

Returns an instance of Mojo::Redis::Database.

cache

$cache = $redis->cache(%attrs);

Returns an instance of Mojo::Redis::Cache.

cursor

$cursor = $redis->cursor(@command);

Returns an instance of Mojo::Redis::Cursor with "command" in Mojo::Redis::Cursor set to the arguments passed. See "new" in Mojo::Redis::Cursor. for possible commands.

new

$redis = Mojo::Redis->new("redis://localhost:6379/1");
$redis = Mojo::Redis->new(Mojo::URL->new->host("/tmp/redis.sock"));
$redis = Mojo::Redis->new(\%attrs);
$redis = Mojo::Redis->new(%attrs);

Object constructor. Can coerce a string into a Mojo::URL and set "url" if present.

AUTHORS

Jan Henning Thorsen - jhthorsen@cpan.org

Dan Book - grinnz@grinnz.com

COPYRIGHT AND LICENSE

Copyright (C) 2018, Jan Henning Thorsen.

This program is free software, you can redistribute it and/or modify it under the terms of the Artistic License version 2.0.