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

18

以下命令仅提供频道列表。

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

如何列出订阅了channel1或channel2的订阅者?

此外

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

2个回答

9
您可以使用 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
});

我应该在if条件语句中放置什么来替换nameconstants.REDIS_SUBSCRIBER_NAME - Mr punch
我创建了一个示例,但是从这个示例中我无法得出任何结论。GitHub 示例 github sample list_subscribers_of_redis_channels - Mr punch
在GitHub示例中github样本list_subscribers_of_redis_channels,我在许多地方使用了console.log,但无法确定订阅了channel1还是channnel2的订阅者。 - Mr punch
我在示例中漏掉了什么吗? - Mr punch
你也可以使用 redis_client.client('setname', 'YOVIJAY') 代替 CLIENT SETNAME 'YOVIJAY' - Jonatas Walker
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接