订阅/发布方法

方法名称 参数 说明 备注
pSubscribe $callback, $pattern, …$patterns 订阅一个或多个符合给定模式的频道。 $callback是回调函数
pubSub $subCommand, …$arguments 查看订阅与发布系统状态。
publish $channel, $message 将信息发送到指定的频道。
pUnSubscribe $pattern, …$patterns 退订所有给定模式的频道。
subscribe $callback, $channel, …$channels 订阅给定的一个或多个频道的信息。
unsubscribe $channel, …$channels 指退订给定的频道。
setSubscribeStop bool $subscribeStop 设置是否退出订阅 当你回调函数想退出时,调用这个命令
isSubscribeStop 查看当前订阅状态

实例

  1. defined("REDIS_HOST") ?: define('REDIS_HOST', '127.0.0.1');
  2. defined("REDIS_PORT") ?: define('REDIS_PORT', 6379);
  3. defined("REDIS_AUTH") ?: define('REDIS_AUTH', 'easyswoole');
  4. go(function () {
  5. $redis = new \EasySwoole\Redis\Redis(new \EasySwoole\Redis\Config\RedisConfig([
  6. 'host' => '127.0.0.1',
  7. 'port' => '6379',
  8. 'auth' => 'easyswoole',
  9. 'serialize' => \EasySwoole\Redis\Config\RedisConfig::SERIALIZE_NONE
  10. ]));;
  11. //新开协程进行订阅
  12. go(function () {
  13. $redis = new \EasySwoole\Redis\Redis(new \EasySwoole\Redis\Config\RedisConfig([
  14. 'host' => REDIS_HOST,
  15. 'port' => REDIS_PORT,
  16. 'auth' => REDIS_AUTH
  17. ]));
  18. $redis->pSubscribe(function (\EasySwoole\Redis\Redis $redis, $pattern, $str) {
  19. var_dump($pattern,$str);
  20. $data = $redis->unsubscribe('test');
  21. var_dump($data);
  22. $redis->setSubscribeStop(true);
  23. }, 'test', 'test1', 'test2');
  24. });
  25. //新开协程进行订阅
  26. go(function () {
  27. $redis = new \EasySwoole\Redis\Redis(new \EasySwoole\Redis\Config\RedisConfig([
  28. 'host' => REDIS_HOST,
  29. 'port' => REDIS_PORT,
  30. 'auth' => REDIS_AUTH
  31. ]));
  32. $redis->subscribe(function (\EasySwoole\Redis\Redis $redis, $pattern, $str) {
  33. var_dump($pattern,$str);
  34. $data = $redis->unsubscribe('test');
  35. var_dump($data);
  36. $redis->setSubscribeStop(true);
  37. }, 'test', 'test1', 'test2');
  38. });
  39. $data = $redis->pubSub('CHANNELS');
  40. var_dump($data);
  41. \Swoole\Coroutine::sleep(1);
  42. $data = $redis->publish('test2', 'test');
  43. var_dump($data);
  44. $data = $redis->pUnSubscribe('test');
  45. var_dump($data);
  46. });