Redis-Pool
Redis-Pool 基于 pool通用连接池,redis协程客户端封装的组件
安装
composer require easyswoole/redis-pool
连接池注册
使用连接之前注册redis连接池:
//redis连接池注册(config默认为127.0.0.1,端口6379)\EasySwoole\RedisPool\Redis::getInstance()->register('redis',new \EasySwoole\Redis\Config\RedisConfig());//redis集群连接池注册\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],]));
连接池配置
当注册好时,将返回连接池的poolConf用于配置连接池:
$redisPoolConfig = \EasySwoole\RedisPool\Redis::getInstance()->register('redis',new \EasySwoole\Redis\Config\RedisConfig());//配置连接池连接数$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],]));//配置连接池连接数$redisPoolConfig->setMinObjectNum(5);$redisPoolConfig->setMaxObjectNum(20);
使用连接池:
//redis连接池注册(config默认为127.0.0.1,端口6379)\EasySwoole\RedisPool\Redis::getInstance()->register('redis',new \EasySwoole\Redis\Config\RedisConfig());//redis集群连接池注册\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方式获取连接$redis = \EasySwoole\RedisPool\Redis::defer('redis');$redisCluster = \EasySwoole\RedisPool\Redis::defer('redisCluster');$redis->set('a', 1);$redisCluster->set('a', 1);//invoke方式获取连接\EasySwoole\RedisPool\Redis::invoke('redis', function (\EasySwoole\Redis\Redis $redis) {var_dump($redis->set('a', 1));});\EasySwoole\RedisPool\Redis::invoke('redisCluster', function (\EasySwoole\Redis\Redis $redis) {var_dump($redis->set('a', 1));});//获取连接池对象$redisPool = \EasySwoole\RedisPool\Redis::getInstance()->get('redis');$redisClusterPool = \EasySwoole\RedisPool\Redis::getInstance()->get('redisCluster');$redis = $redisPool->getObj();$redisPool->recycleObj($redis);//清除pool中的定时器\EasySwoole\Component\Timer::getInstance()->clearAll();});
