Команда Redis для вывода списка всех подписчиков, подписанных на канал Redis

Команда ниже дает только список каналов.

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

Как составить список подписчиков, подписанных на канал 1 ИЛИ канал 2?

также

я не нашел команду redis для вывода списка всех подписчиков определенного канала


person Mr punch    schedule 11.02.2016    source источник


Ответы (2)


Вы можете использовать PUBSUB NUMSUB channel1 ИЛИ PUBSUB NUMSUB channel2 и получить ответ о количестве подписчиков на указанный канал.

person Jeffrey Hill    schedule 30.03.2018

Я могу добиться этого с помощью чего-то вроде:

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
});
person Jonatas Walker    schedule 11.02.2016
comment
что я должен поставить, если условие вместо name && constants.REDIS_SUBSCRIBER_NAME - person Mr punch; 12.02.2016
comment
я требовал ('redis'), затем создал клиент redis_client, затем запустил этот скрипт в узле, и он говорит constants is not defined - person Mr punch; 13.02.2016
comment
Это имя, которое вы можете установить для своего клиента-подписчика. subscriber.client('setname', constants.REDIS_SUBSCRIBER_NAME);. Используйте свое имя. - person Jonatas Walker; 13.02.2016
comment
я создал пример того, что я сделал ... но из этого примера я не могу прийти к какому-либо выводу. пример github образец list_subscribers_of_redis_channels на github - person Mr punch; 26.02.2016
comment
также в примере github пример github list_subscribers_of_redis_channels у меня есть console.log во многих местах и ​​я не могу разобрать подписчиков подписался на канал1 или канал2 - person Mr punch; 26.02.2016
comment
я что-то пропустил в образце - person Mr punch; 26.02.2016
comment
Не меняйте kv[0] == 'name'. Это значение от Redis. - person Jonatas Walker; 26.02.2016
comment
Вы также можете использовать redis_client.client('setname', 'YOVIJAY') вместо CLIENT SETNAME 'YOVIJAY' - person Jonatas Walker; 26.02.2016