Redis-Pool
Redis-Pool 基于 pool連接池管理,redis協程客戶端 封裝的組件
安裝
composer require easyswoole/redis-pool
連接池注冊
使用連接之前注冊redis連接池:
//redis連接池注冊(config默認為127.0.0.1,端口6379)
\EasySwoole\RedisPool\RedisPool::getInstance()->register(new \EasySwoole\Redis\Config\RedisConfig(),'redis');
// config是空配置,用戶需手動配置.
//redis集群連接池注冊
\EasySwoole\RedisPool\RedisPool::getInstance()->register(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],
]
),'redisCluster');
連接池配置
當注冊好時,將返回連接池的poolConf用于配置連接池:
$redisPoolConfig = \EasySwoole\RedisPool\RedisPool::getInstance()->register(new \EasySwoole\Redis\Config\RedisConfig());
//配置連接池連接數
$redisPoolConfig->setMinObjectNum(5);
$redisPoolConfig->setMaxObjectNum(20);
$redisClusterPoolConfig = \EasySwoole\RedisPool\RedisPool::getInstance()->register(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);
使用連接池
//defer方式獲取連接
$redis = \EasySwoole\RedisPool\RedisPool::defer();
$redisCluster = \EasySwoole\RedisPool\RedisPool::defer();
$redis->set('a', 1);
$redisCluster->set('a', 1);
//invoke方式獲取連接
\EasySwoole\RedisPool\RedisPool::invoke(function (\EasySwoole\Redis\Redis $redis) {
var_dump($redis->set('a', 1));
});
\EasySwoole\RedisPool\RedisPool::invoke(function (\EasySwoole\Redis\Redis $redis) {
var_dump($redis->set('a', 1));
});
//獲取連接池對象
$redisPool = \EasySwoole\RedisPool\RedisPool::getInstance()->getPool();
$redisClusterPool = \EasySwoole\RedisPool\RedisPool::getInstance()->getPool();
$redis = $redisPool->getObj();
$redisPool->recycleObj($redis);
?。。∽⒁猓谖粗付ㄟB接池名稱是,注冊的連接池名稱為默認的default
方法
register
\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
\EasySwoole\RedisPool\RedisPool::defer();
參數:
- $name 連接池名稱 默認
default
- $timeout 取出連接超時時間
返回:
- 成功返回連接池內對象 失敗為
null
invoke
\EasySwoole\RedisPool\RedisPool::invoke(function (\EasySwoole\Redis\Redis $redis) {
var_dump($redis->set('a', 1));
});
參數:
- $call 執行的閉包函數,閉包函數參數為連接池對象
- $name 連接池名稱 默認
default
- $timeout 取出連接超時時間
返回:
- 成功返回閉包函數內返回的結果,失敗返回
null
getPool
\EasySwoole\RedisPool\RedisPool::getInstance()->getPool();
參數:
- $name 連接池名稱 默認
default
返回:
- 成功返回
EasySwoole\RedisPool\Pool
,失敗返回null
.