Redis一键获取全部订阅者,高效管理用户数据,网友推荐:操作简便实用

文章导读
使用 Redis 的 PUBSUB NUMSUB 命令一键获取所有频道订阅者数量,PUBSUB CHANNELS 获取所有活跃频道。高效管理用户数据:SET user:1 "name:张三,id:123"; SMEMBERS users 获取全部用户列表。网友推荐 Python 代码:import redisr = redis.Redis(host='localhost', port=6379)s
📋 目录
  1. CSDN 网友分享
  2. 博客园经验帖
  3. 知乎网友推荐
  4. 掘金社区
  5. 简书教程
  6. StackOverflow 中文讨论
A A

使用 Redis 的 PUBSUB NUMSUB 命令一键获取所有频道订阅者数量,PUBSUB CHANNELS 获取所有活跃频道。高效管理用户数据:SET user:1 "name:张三,id:123"; SMEMBERS users 获取全部用户列表。网友推荐 Python 代码:
import redis
r = redis.Redis(host='localhost', port=6379)
subs = r.pubsub_numsub('channel1')
print(subs) # [('channel1', 5)]
all_channels = r.pubsub_channels()
print(all_channels)

CSDN 网友分享

Redis一键获取全部订阅者,操作简便实用!
r.pubsub_channels() # 获取所有频道
r.pubsub_numsub('*') # 获取所有频道的订阅者数
超级好用,管理用户订阅数据轻松搞定!

博客园经验帖

高效管理用户数据,用 Redis Hash 存储用户订阅:
HSET user:subs:1001 channel1 1 channel2 1
HGETALL user:subs:1001 # 一键获取用户所有订阅
批量获取:SCAN 0 MATCH user:subs:* 获取全部用户订阅键,然后 HGETALL。

Redis一键获取全部订阅者,高效管理用户数据,网友推荐:操作简便实用

知乎网友推荐

Redis Pub/Sub 监控订阅者:PUBSUB NUMSUB channel1 channel2
一键获取多个频道订阅数,返回列表。网友说:PUBSUB CHANNELS * 列出所有有订阅者的频道,太实用了!结合 SCAN 遍历所有用户键,高效管理。

掘金社区

Python 脚本一键拉取全部订阅者数据:
def get_all_subs(r):
channels = r.pubsub_channels()
for ch in channels:
subs_count = r.pubsub_numsub(ch)[0][1]
print(f'{ch}: {subs_count}')
操作简便,网友亲测高效管理上万用户订阅。

简书教程

用户数据管理神器:用 Sorted Set ZADD users 1 user1 2 user2
ZRANGE users 0 -1 WITHSCORES 一键获取全部用户及分数。订阅者用 SSCAN userset 获取成员,简单实用!

Redis一键获取全部订阅者,高效管理用户数据,网友推荐:操作简便实用

StackOverflow 中文讨论

Redis 获取所有订阅者:没有直接命令,但用 PUBSUB NUMSUB '' 获取全局,或遍历频道。用户数据:KEYS user:* | xargs redis-cli GET 批量获取,网友推荐 pipeline 优化。

FAQ
Q: 如何一键获取单个频道订阅者列表?
A: Redis Pub/Sub 不直接支持获取订阅者列表,只能获取数量,用 PUBSUB NUMSUB channel。
Q: 大量用户数据怎么高效遍历?
A: 用 SCAN 0 MATCH 'user:*' COUNT 100 逐步扫描,避免阻塞。
Q: Python 中怎么监听订阅变化?
A: r.pubsub() 然后 psubscribe('channel*'),实时获取消息。
Q: 订阅者数据持久化吗?
A: Pub/Sub 是内存的,重启丢失,用 List 或 Set 手动记录用户订阅。