EasySwoole Redis協程客戶端發佈
很多人可能都會問,Swoole不是自帶了協程的Redis客戶端嗎?回答是的,感謝swoole開發組的辛勤爲我們開發的redis客戶端。然而,在生產中,我們發現了一些問題。swoole的redis客戶端並沒有完全支持redis的全部命令,比如geo搜索,還有事務,特別是集羣模式的redis,swoole客戶端並不支持。爲此,我們決定用swoole的tcp客戶端實現一個完整版的redis客戶端。
項目地址:https://github.com/easy-swool...
Easyswoole項目主頁:https://github.com/easy-swool... (喜歡記得點個star)
Easyswoole項目官網:https://www.easyswoole.com/
支持方法
目前,該redis客戶端組件,已經支持除去腳本外的所有方法(目前支持了181個方法):
- 連接方法(cluster)
- 集羣方法(connection)
- geohash
- 哈希(hash)
- 鍵(keys)
- 列表(lists)
- 訂閱/發佈(pub/sub)
- 服務器(server)
- 字符串(string)
- 有序集合(sorted sets)
- 集合 (sets)
- 事務 (transaction)
由於redis的命令較多,可能漏掉1,2個命令
redis使用示例
<?php
include "../vendor/autoload.php";
go(function (){
$redis = new \EasySwoole\Redis\Redis(new \EasySwoole\Redis\Config\RedisConfig([
'host' => '127.0.0.1',
'port' => '6379',
'auth' => 'easyswoole',
'serialize' => \EasySwoole\Redis\Config\RedisConfig::SERIALIZE_NONE
]));
var_dump($redis->set('a',1));
var_dump($redis->get('a'));
});
redis集羣使用示例
<?php
include "../vendor/autoload.php";
go(function () {
$redis = new \EasySwoole\Redis\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],
], [
'auth' => '',
'serialize' => \EasySwoole\Redis\Config\RedisConfig::SERIALIZE_PHP
]));
var_dump($redis->set('a',1));
var_dump($redis->get('a'));
var_dump($redis->clusterKeySlot('a'));
});