Redis-Pool

Redis-Pool is based on [pool universal connection pool] (./Pool/introduction.md), [redis coroutine client] (./Redis/introduction.md) packaged components

Installation

composer require easyswoole/redis-pool

Connection pool registration

Register the Redis connection pool before using the connection:

//Redis connection pool registration (config defaults to 127.0.0.1, port 6379)
\EasySwoole\RedisPool\Redis::getInstance()->register('redis',new \EasySwoole\Redis\Config\RedisConfig());

//Redis cluster connection pool registration
\EasySwoole\RedisPool\Redis::getInstance()->register('redisCluster',new \EasySwoole\Redis\Config\RedisClusterConfig([
        ['172.16.253.156', 9001],
        ['172.16.253.156', 9002],
        ['172.16.253.156', 9003],
        ['172.16.253.156', 9004],
    ]
));

Connection pool configuration

When registered, the poolConf that will return the connection pool is used to configure the connection pool:

$redisPoolConfig = \EasySwoole\RedisPool\Redis::getInstance()->register('redis',new \EasySwoole\Redis\Config\RedisConfig());
//Configure connection pool connections
$redisPoolConfig->setMinObjectNum(5);
$redisPoolConfig->setMaxObjectNum(20);

$redisClusterPoolConfig = \EasySwoole\RedisPool\Redis::getInstance()->register('redisCluster',new \EasySwoole\Redis\Config\RedisClusterConfig([
        ['172.16.253.156', 9001],
        ['172.16.253.156', 9002],
        ['172.16.253.156', 9003],
        ['172.16.253.156', 9004],
    ]
));
//Configure connection pool connections
$redisPoolConfig->setMinObjectNum(5);
$redisPoolConfig->setMaxObjectNum(20);

Use a connection pool:

//Redis connection pool registration (config defaults to 127.0.0.1, port 6379)
\EasySwoole\RedisPool\Redis::getInstance()->register('redis',new \EasySwoole\Redis\Config\RedisConfig());

//Redis cluster connection pool registration
\EasySwoole\RedisPool\Redis::getInstance()->register('redisCluster',new \EasySwoole\Redis\Config\RedisClusterConfig([
        ['172.16.253.156', 9001],
        ['172.16.253.156', 9002],
        ['172.16.253.156', 9003],
        ['172.16.253.156', 9004],
    ]
));
go(function () {
    //defer mode to get the connection
    $redis = \EasySwoole\RedisPool\Redis::defer('redis');
    $redisCluster = \EasySwoole\RedisPool\Redis::defer('redisCluster');
    $redis->set('a', 1);
    $redisCluster->set('a', 1);

    //invoke mode to get the connection
    \EasySwoole\RedisPool\Redis::invoker('redis', function (\EasySwoole\Redis\Redis $redis) {
        var_dump($redis->set('a', 1));
    });
    \EasySwoole\RedisPool\Redis::invoker('redisCluster', function (\EasySwoole\Redis\Redis $redis) {
        var_dump($redis->set('a', 1));
    });

    //Get the connection pool object
    $redisPool = \EasySwoole\RedisPool\Redis::getInstance()->get('redis');
    $redisClusterPool = \EasySwoole\RedisPool\Redis::getInstance()->get('redisCluster');

    $redis = $redisPool->getObj();
    $redisPool->recycleObj($redis);

    //Clear the timer in the pool
    \EasySwoole\Component\Timer::getInstance()->clearAll();
});