redis-py中有NUMSUB命令吗?

3 投票
2 回答
1428 浏览
提问于 2025-04-18 15:32

在Redis中,有没有类似于NUMSUB命令的功能可以在Python客户端使用?

我查阅了文档,除了publish()这个方法,找不到其他的东西。这个方法可以返回某个频道的订阅者数量。不过,事后知道有多少个订阅者对我来说并没有太大用处。

2 个回答

1

你可以使用StrictRedis连接,然后创建一个pubsub对象:

pubsub(self, shard_hint=None) method of redis.client.StrictRedis instance
    Return a Publish/Subscribe object. With this object, you can
    subscribe to channels and listen for messages that get published to
    them.

rc = redis.StrictRedis()
ps = rc.pubsub()
ps.subscribe(channel)
numsub = ps.subscription_count

这个pubsub对象有一些方法可以用来订阅频道,还有一个叫做subscription_count的字段,它可以告诉你有多少人订阅了这个频道。

3

目前在redis-py这个库里,似乎还没有一个简单的封装可以直接处理这类情况。我最后还是用了普通的redis命令来获取某个特定频道的订阅者。

r = redis.StrictRedis(**{
    'host': $WhateverHost,
    'port': 6379,
    })

pubsub = r.pubsub()
pubsub.subscribe('MyChannel:ID')
....
subscriber_count = r.execute_command('PUBSUB', 'NUMSUB', 'MyChannel:ID')

撰写回答