不少人可能都會問,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/php
目前,該redis客戶端組件,已經支持除去腳本外的全部方法(目前支持了181個方法):git
因爲redis的命令較多,可能漏掉1,2個命令
<?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')); });
<?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')); });