Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jhthorsen/mojo-redis
Non-blocking Redis driver using Mojo::IOLoop
https://github.com/jhthorsen/mojo-redis
Last synced: 3 months ago
JSON representation
Non-blocking Redis driver using Mojo::IOLoop
- Host: GitHub
- URL: https://github.com/jhthorsen/mojo-redis
- Owner: jhthorsen
- Created: 2018-06-20T07:00:19.000Z (over 6 years ago)
- Default Branch: main
- Last Pushed: 2024-08-05T18:24:52.000Z (5 months ago)
- Last Synced: 2024-08-05T21:37:06.513Z (5 months ago)
- Language: Perl
- Homepage: https://metacpan.org/pod/Mojo::Redis
- Size: 696 KB
- Stars: 14
- Watchers: 8
- Forks: 11
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- Changelog: Changes
Awesome Lists containing this project
README
# 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](https://metacpan.org/pod/Mojo%3A%3APromise#all) 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](https://metacpan.org/pod/Mojo%3A%3ARedis) is a Redis driver that use the [Mojo::IOLoop](https://metacpan.org/pod/Mojo%3A%3AIOLoop), which makes it
integrate easily with the [Mojolicious](https://metacpan.org/pod/Mojolicious) framework.It tries to mimic the same interface as [Mojo::Pg](https://metacpan.org/pod/Mojo%3A%3APg), [Mojo::mysql](https://metacpan.org/pod/Mojo%3A%3Amysql) and
[Mojo::SQLite](https://metacpan.org/pod/Mojo%3A%3ASQLite), 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](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
`[email protected]`.# EVENTS
## connection
$cb = $redis->on(connection => sub { my ($redis, $connection) = @_; });
Emitted when [Mojo::Redis::Connection](https://metacpan.org/pod/Mojo%3A%3ARedis%3A%3AConnection) 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](https://metacpan.org/pod/Mojo%3A%3ARedis%3A%3AConnection#encoding) 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](https://metacpan.org/pod/Protocol%3A%3ARedis%3A%3AXS) if the optional module is available and at
least version 0.06, or falls back to [Protocol::Redis::Faster](https://metacpan.org/pod/Protocol%3A%3ARedis%3A%3AFaster).## pubsub
$pubsub = $redis->pubsub;
Lazy builds an instance of [Mojo::Redis::PubSub](https://metacpan.org/pod/Mojo%3A%3ARedis%3A%3APubSub) for this object, instead of
returning a new instance like ["db"](#db) does.## url
$url = $redis->url;
$redis = $redis->url(Mojo::URL->new("redis://localhost/3"));Holds an instance of [Mojo::URL](https://metacpan.org/pod/Mojo%3A%3AURL) that describes how to connect to the Redis server.
# METHODS
## db
$db = $redis->db;
Returns an instance of [Mojo::Redis::Database](https://metacpan.org/pod/Mojo%3A%3ARedis%3A%3ADatabase).
## cache
$cache = $redis->cache(%attrs);
Returns an instance of [Mojo::Redis::Cache](https://metacpan.org/pod/Mojo%3A%3ARedis%3A%3ACache).
## cursor
$cursor = $redis->cursor(@command);
Returns an instance of [Mojo::Redis::Cursor](https://metacpan.org/pod/Mojo%3A%3ARedis%3A%3ACursor) with
["command" in Mojo::Redis::Cursor](https://metacpan.org/pod/Mojo%3A%3ARedis%3A%3ACursor#command) set to the arguments passed. See
["new" in Mojo::Redis::Cursor](https://metacpan.org/pod/Mojo%3A%3ARedis%3A%3ACursor#new). 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](https://metacpan.org/pod/Mojo%3A%3AURL) and set ["url"](#url)
if present.# AUTHORS
Jan Henning Thorsen - `[email protected]`
Dan Book - `[email protected]`
# 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.