NAME

Redis::Cluster::Fast - A fast perl binding for Redis Cluster

SYNOPSIS

use Redis::Cluster::Fast;

my $redis = Redis::Cluster::Fast->new(
    startup_nodes => [
        'localhost:9000',
        'localhost:9001',
        'localhost:9002',
        'localhost:9003',
        'localhost:9004',
        'localhost:9005',
    ],
    connect_timeout => 0.05,
    command_timeout => 0.05,
    max_retry_count => 10,
);

$redis->set('test', 123);

# '123'
my $str = $redis->get('test');

$redis->mset('{my}foo', 'hoge', '{my}bar', 'fuga');

# get as array-ref
my $array_ref = $redis->mget('{my}foo', '{my}bar');
# get as array
my @array = $redis->mget('{my}foo', '{my}bar');

$redis->hset('mymap', 'field1', 'Hello');
$redis->hset('mymap', 'field2', 'ByeBye');

# get as hash-ref
my $hash_ref = $redis->hgetall('mymap');
# get as hash
my %hash = $redis->hgetall('mymap');

DESCRIPTION

Redis::Cluster::Fast is like Redis::Fast but support Redis Cluster by hiredis-cluster.

Require Redis 6 or higher to support RESP3.

To build this module you need at least autoconf, automake, libtool, patch, pkg-config are installed on your system.

MICROBENCHMARK

Simple microbenchmark comparing PP and XS. The benchmark script used can be found under examples directory.

Redis::Cluster::Fast is 0.084
Redis::ClusterRider is 0.26
### mset ###
                        Rate  Redis::ClusterRider Redis::Cluster::Fast
Redis::ClusterRider  13245/s                   --                 -34%
Redis::Cluster::Fast 20080/s                  52%                   --
### mget ###
                        Rate  Redis::ClusterRider Redis::Cluster::Fast
Redis::ClusterRider  14641/s                   --                 -40%
Redis::Cluster::Fast 24510/s                  67%                   --
### incr ###
                        Rate  Redis::ClusterRider Redis::Cluster::Fast
Redis::ClusterRider  18367/s                   --                 -44%
Redis::Cluster::Fast 32879/s                  79%                   --
### new and ping ###
                       Rate  Redis::ClusterRider Redis::Cluster::Fast
Redis::ClusterRider   146/s                   --                 -96%
Redis::Cluster::Fast 3941/s                2598%                   --

METHODS

new(%args)

Following arguments are available.

startup_nodes

Specifies the list of Redis Cluster nodes.

connect_timeout

A fractional seconds. (default: 1.0)

Connection timeout to connect to a Redis node.

command_timeout

A fractional seconds. (default: 1.0)

Specifies the timeout value for each read/write event to execute a Redis Command.

max_retry_count

A integer value. (default: 5)

The client will retry calling the Redis Command only if it successfully get one of the following error responses. MOVED, ASK, TRYAGAIN, CLUSTERDOWN.

mas_retry_count is the maximum number of retries and must be 1 or above.

<command>(@args)

To run a Redis command with arguments.

The command can also be expressed by concatenating the subcommands with underscores.

e.g. cluster_info

LICENSE

Copyright (C) plainbanana.

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

AUTHOR

plainbanana <plainbanana@mustardon.tokyo>

SEE ALSO

Redis::ClusterRider
Redis::Fast