Redis命令列出所有订阅redis频道的订阅者

Posted

技术标签:

【中文标题】Redis命令列出所有订阅redis频道的订阅者【英文标题】:Redis command to list all subscribers subscribed to redis channel 【发布时间】:2016-05-22 14:40:29 【问题描述】:

下面的命令只给出频道列表。

127.0.0.1:6379> PUBSUB CHANNELS
1) "mychannel"
2) "mychanne2"

如何列出在频道 1 或频道 2 上订阅的订阅者。?

还有

我没有找到列出特定频道所有订阅者的 redis 命令

【问题讨论】:

【参考方案1】:

您可以使用PUBSUB NUMSUB channel1PUBSUB NUMSUB channel2获取指定频道订阅人数的回复。

【讨论】:

【参考方案2】:

我可以通过以下方式实现:

redis_client.multi().client(['list']).exec(function(err, results) 
  var pairs = results[0].split(' ');
  pairs.forEach(function(pair)
    var kv = pair.split('=');
    if (kv[0] == 'name' && kv[1] == constants.REDIS_SUBSCRIBER_NAME)
      found = true;
  );
  if (found) // some logic
  else // some logic
);

【讨论】:

如果条件代替name && constants.REDIS_SUBSCRIBER_NAME,我应该输入什么 i required('redis') ,然后创建了 redis_client 客户端,然后在节点中触发了这个脚本,上面写着constants is not defined 这是您可以为订阅者客户端设置的名称。 subscriber.client('setname', constants.REDIS_SUBSCRIBER_NAME);使用你自己的名字 我已经创建了一个我所做的示例.. 但是从这个示例中我无法得出任何结论。github 示例github sample list_subscribers_of_redis_channels 也在 github 示例中github sample list_subscribers_of_redis_channels 我在很多地方都有 console.log 并且无法确定在 channel1 或 channel2 上订阅的订阅者

以上是关于Redis命令列出所有订阅redis频道的订阅者的主要内容,如果未能解决你的问题,请参考以下文章

Redis发布订阅

redis 订阅与发布

redis的发布订阅

redis基础二

Redis-发布与订阅

Redis 发布/订阅模式