redis-py中有NUMSUB命令吗?
在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')