Redis-Pool

Redis-Pool 基于 pool连接池管理,redis协程客户端 封装的组件

安装

  1. composer require easyswoole/redis-pool

连接池注册

使用连接之前注册redis连接池:

  1. //redis连接池注册(config默认为127.0.0.1,端口6379)
  2. \EasySwoole\RedisPool\RedisPool::getInstance()->register(new \EasySwoole\Redis\Config\RedisConfig(),'redis');
  3. // config是空配置,用户需手动配置.
  4. //redis集群连接池注册
  5. \EasySwoole\RedisPool\RedisPool::getInstance()->register(new \EasySwoole\Redis\Config\RedisClusterConfig([
  6. ['172.16.253.156', 9001],
  7. ['172.16.253.156', 9002],
  8. ['172.16.253.156', 9003],
  9. ['172.16.253.156', 9004],
  10. ]
  11. ),'redisCluster');

连接池配置

当注册好时,将返回连接池的poolConf用于配置连接池:

  1. $redisPoolConfig = \EasySwoole\RedisPool\RedisPool::getInstance()->register(new \EasySwoole\Redis\Config\RedisConfig());
  2. //配置连接池连接数
  3. $redisPoolConfig->setMinObjectNum(5);
  4. $redisPoolConfig->setMaxObjectNum(20);
  5. $redisClusterPoolConfig = \EasySwoole\RedisPool\RedisPool::getInstance()->register(new \EasySwoole\Redis\Config\RedisClusterConfig([
  6. ['172.16.253.156', 9001],
  7. ['172.16.253.156', 9002],
  8. ['172.16.253.156', 9003],
  9. ['172.16.253.156', 9004],
  10. ]
  11. ));
  12. //配置连接池连接数
  13. $redisPoolConfig->setMinObjectNum(5);
  14. $redisPoolConfig->setMaxObjectNum(20);

使用连接池

  1. //defer方式获取连接
  2. $redis = \EasySwoole\RedisPool\RedisPool::defer();
  3. $redisCluster = \EasySwoole\RedisPool\RedisPool::defer();
  4. $redis->set('a', 1);
  5. $redisCluster->set('a', 1);
  6. //invoke方式获取连接
  7. \EasySwoole\RedisPool\RedisPool::invoke(function (\EasySwoole\Redis\Redis $redis) {
  8. var_dump($redis->set('a', 1));
  9. });
  10. \EasySwoole\RedisPool\RedisPool::invoke(function (\EasySwoole\Redis\Redis $redis) {
  11. var_dump($redis->set('a', 1));
  12. });
  13. //获取连接池对象
  14. $redisPool = \EasySwoole\RedisPool\RedisPool::getInstance()->getPool();
  15. $redisClusterPool = \EasySwoole\RedisPool\RedisPool::getInstance()->getPool();
  16. $redis = $redisPool->getObj();
  17. $redisPool->recycleObj($redis);

!!!注意,在未指定连接池名称是,注册的连接池名称为默认的default

方法

register

  1. \EasySwoole\RedisPool\RedisPool::getInstance()->register();

参数:

  • $config new \EasySwoole\Redis\Config\RedisConfig() || new \EasySwoole\Redis\Config\RedisClusterConfig()
  • $name 连接池名称 默认default
  • $cask 用户自定义redis-client 可忽略

返回:

  • 注册成功返回EasySwoole\Pool\Config,可设置连接池的配置.

defer

  1. \EasySwoole\RedisPool\RedisPool::defer();

参数:

  • $name 连接池名称 默认default
  • $timeout 取出连接超时时间

返回:

  • 成功返回连接池内对象 失败为null

invoke

  1. \EasySwoole\RedisPool\RedisPool::invoke(function (\EasySwoole\Redis\Redis $redis) {
  2. var_dump($redis->set('a', 1));
  3. });

参数:

  • $call 执行的闭包函数,闭包函数参数为连接池对象
  • $name 连接池名称 默认default
  • $timeout 取出连接超时时间

返回:

  • 成功返回闭包函数内返回的结果,失败返回null

getPool

  1. \EasySwoole\RedisPool\RedisPool::getInstance()->getPool();

参数:

  • $name 连接池名称 默认default

返回:

  • 成功返回EasySwoole\RedisPool\Pool,失败返回null.