讲师中心 微信公众号
AI工具推荐 视频效率加速

如何监控Redis发布订阅模式的订阅者状态?

小浩君_3805

小浩君_3805

发布时间:2026-08-27 11:33:35

|

773人浏览过

|

来源于php中文网

原创

PUBSUB CHANNELS不可靠,因它仅返回有活跃订阅者的频道名,不反映TCP连接状态、不计数、不跨节点,且客户端本地channels字典与服务端实际状态可能脱节;PUBSUB NUMSUB返回服务端瞬时订阅数,但无法识别僵尸连接或区分SUBSCRIBE/PSUBSCRIBE。

如何监控redis发布订阅模式的订阅者状态?

Redis 本身不提供实时、精确的“谁正在订阅”的状态快照,PUBSUB 命令返回的是统计值而非连接详情,盲目轮询或依赖 pubsub.channels 属性容易误判活跃性。

为什么 pubsub.channels 不可靠?

Python redis 客户端的 pubsub.channels 字典只记录调用 subscribe() 时本地注册的频道名,它不反映实际 TCP 连接是否存活、服务端是否还承认该订阅。常见失效场景:

  • 网络抖动导致连接断开,但客户端未触发重连逻辑,channels 仍显示非空
  • 服务端因超时或主动踢出连接(如 timeout 配置),但客户端无感知
  • 多线程/多进程环境下,不同实例共用一个 pubsub 对象,channels 状态互相污染

PUBSUB NUMSUB 能查到什么?

这个命令返回的是当前频道上**服务端记录的活跃订阅者数量**,是唯一来自 Redis 服务端的真实计数:

redis-cli --raw pubsub numsub mychannel

输出形如:mychannel 3,表示此刻有 3 个客户端在监听该频道。但它不告诉你这 3 个是谁、来自哪台机器、用了什么 client id。关键限制:

Redis Skill - 高性能缓存管理
Redis Skill - 高性能缓存管理

Redis 缓存和数据结构管理技能。通过自然语言操作 Redis,支持 String、Hash、List、Set、ZSet、Stream 等数据结构操作。当用户提到 Redis、缓存、消息队列、会话存储时使用此技能。

下载
  • 仅对 SUBSCRIBE 的频道有效,PSUBSCRIBE 模式匹配的订阅不计入 NUMSUB
  • 数值可能滞后:连接刚断开时,服务端需等待心跳超时(默认 0,即依赖 TCP FIN)才清理计数
  • 无法区分“正常订阅”和“卡住的僵尸连接”——两者都算作 1

如何判断单个监听器是否真正在线?

没有银弹,必须结合客户端行为和服务端反馈做交叉验证:

  • 在 pubsub.get_message() 循环中,捕获 ConnectionError 或 TimeoutError,这是连接断开最直接的信号
  • 定期发送轻量级探测消息(如 PUBLISH health:ping "ts:12345"),要求监听器收到后回传到另一个频道,超时未响应即判定离线
  • 启用 Redis 的 client list,过滤出 cmd=subscribe 的连接,再比对 id 和你的应用 client name(需提前设 CLIENT SETNAME),但注意该命令开销较大,不宜高频调用

生产环境建议的监控组合

不要只盯一个指标。真实可用的状态判断需要三层信息对齐:

  • 客户端本地:检查 pubsub.connection.connected 是否为 True,且最近 30 秒内调用过 get_message() 并成功返回
  • 服务端统计:redis-cli pubsub numsub your_channel 返回值是否 > 0,且与你预期的部署实例数接近
  • 业务心跳:监听器定期往 status:your_service 频道发带时间戳的 JSON,由独立 watcher 检查最后更新时间是否超期

最容易被忽略的是:Redis Pub/Sub 本身无 ACK 机制,所谓“订阅成功”只是命令发出去了,不代表服务端已生效;真正的状态确认必须靠后续消息收发闭环来验证。

热门AI工具

更多
超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

相关专题

更多
常用的数据库软件
常用的数据库软件

常用的数据库软件有MySQL、Oracle、SQL Server、PostgreSQL、MongoDB、Redis、Cassandra、Hadoop、Spark和Amazon DynamoDB。更多关于数据库软件的内容详情请看本专题下面的文章。php中文网欢迎大家前来学习。

4169

2023.11.02

内存数据库有哪些
内存数据库有哪些

内存数据库有Redis、Memcached、Apache Ignite、VoltDB、TimesTen、H2 Database、Aerospike、Oracle TimesTen In-Memory Database、SAP HANA和ache Cassandra。更多关于内存数据库相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

3655

2023.11.14

mongodb和redis哪个读取速度快
mongodb和redis哪个读取速度快

redis 的读取速度比 mongodb 更快。原因包括:1. redis 使用简单的键值存储,而 mongodb 存储 json 格式的数据,需要解析和反序列化。2. redis 使用哈希表快速查找数据,而 mongodb 使用 b-tree 索引。因此,redis 在需要高性能读取操作的应用程序中是一个更好的选择。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

6492

2024.04.02

redis怎么做缓存服务器
redis怎么做缓存服务器

redis 作为缓存服务器的答案:redis 是一款开源、高性能、分布式的键值存储,可作为缓存服务器使用。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

603

2024.04.07

redis怎么解决数据一致性
redis怎么解决数据一致性

redis 提供了两种一致性模型,以维护副本数据一致性:强一致性 (sync) 确保写操作仅在复制到所有从节点后才完成;最终一致性 (async) 则在主节点上写操作后认为已完成,牺牲一致性换取性能。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

716

2024.04.07

mysql和redis怎么保证双写一致性
mysql和redis怎么保证双写一致性

确保 mysql 和 redis 双写一致性的技术包括:1、事务性更新:同时更新 mysql 和 redis,保证一致性;2、主从复制:mysql 主服务器更改同步到 redis 从服务器;3、基于事件的更新:mysql 记录更改并发送到 redis等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

5982

2024.04.07

redis缓存一般存些什么数据
redis缓存一般存些什么数据

redis缓存中存储的数据类型包括:字符串、哈希、列表、集合、有序集合、位图、地理空间数据和hyperloglog。这些数据类型适用于存储各种数据,从简单信息到复杂对象和地理位置。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1140

2024.04.07

redis的8种数据类型有哪些
redis的8种数据类型有哪些

redis 提供 8 种数据类型:字符串(文本、数字、二进制)、哈希(键值对)、列表(有序集合)、集合(无序唯一元素)、有序集合(按分数排序)、地理空间(地理位置)、hyperloglog(估计大数据基数)和位图(位序列存储)。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

976

2024.04.07

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

160

2026.09.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpEnv手册
phpEnv手册

共0课时 | 0人学习

进程与SOCKET
进程与SOCKET

共6课时 | 0.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn