当前位置: 首页 > news >正文

日常八股文记录

Redis Streams是一个仅追加(Append-Only)的持久化消息日志。它不是一个普通的 List(列表)或 Pub/Sub(发布订阅)每条消息进来都会自动生成一个全局唯一的 ID(时间戳+序号),并且消息会持久化在内存(及 RDB/AOF)中,不会因为消费者离线而丢失。

会有一个消费者组,来对Streams进行消费。同一条消息只会被组内的某一个消费者拿到(实现负载均衡)。

// ============================================================ // Redis 配置 // ============================================================ struct RedisConfig { std::string host = "127.0.0.1"; int port = 6379; std::string password = ""; int db = 0; // Streams 配置 std::string streamKey = "device:commands"; std::string consumerGroup = "gateway-group"; std::string consumerName = "gateway-1"; // 启动时动态覆盖 // 连接池配置 int poolSize = 4; // 连接池大小 int connTimeoutMs = 3000; // 连接超时 int cmdTimeoutMs = 5000; // 命令超时 };

除此之外,还有一个极其重要的隐藏概念:PEL(Pending Entries List,待处理列表)。当消费者取走一条消息但还没回复XACK(确认)时,这条消息就挂在 PEL 里。这是 Redis Streams保证消息不丢失的基石。

可能问题:配置里有cmdTimeoutMs = 5000。如果你为了实时性,采用XREADGROUP BLOCK 0(永久阻塞等待新消息),该命令在收到下一条消息前,会一直阻塞住这条 TCP 连接。如果客户端的底层cmdTimeoutMs设置为 5 秒,那么每隔 5 秒这个阻塞命令就会因超时而断开,网关就会频繁重连,产生大量XGROUP重入日志。
解决方案:对于阻塞读命令,必须单独设置为无限超时(-1),或者采用短轮询(如BLOCK 1000超时重试)。

consumerName绝对不能重复

PEL 无限膨胀
如果网关处理设备命令时异常崩溃,没有来得及执行XACK,这些消息就会永远卡在 PEL 里。随着时间推移,PEL 会越来越大,导致XPENDING命令变慢,甚至撑爆 Redis 内存。
补救措施:启动一个后台定时任务,扫描XPENDING超时(如处理超过 30 秒)的消息,执行XCLAIM(认领)并重新处理,或者直接XACK并记录失败日志。

在分布式中,redis的数据库一共16个,但是只能使用db=0的那一个,暂时还不支持

http://www.jsqmd.com/news/1197936/

相关文章:

  • SSMS调试实战:从基础断点到条件断点的进阶应用
  • Cython 加速关键代码路径:类型声明、编译优化与 C 扩展交互实战
  • 食品加工液浓缩不再难,低温蒸发技术让风味保留更出色
  • Claude Fable 5与Opus 4.8教育内容生成对比分析
  • Claude Opus 4.8 企业级应用场景落地指南
  • 雅典官方服务项目及价格查询|详细地址及客服热线权威信息公告(2026年7月最新) - 亨得利官方服务中心
  • C++实现Delaunay三角剖分:从原理到工程实战
  • 公安PGIS基础地图更新方案:千寻位置高精度地图数据服务
  • Cesium海量地下管线与倾斜摄影模型融合加载与性能优化
  • 2025年C++高性能计算:算子融合的五大关键技术解析
  • 线性电源与开关电源:原理、对比与应用场景解析
  • C++结构体实战指南:从基础创建到高级应用(含数组、指针、函数传参与const优化)
  • E2000S BMC上电复位和看门狗复位
  • GLM-4.7前端生成:React+Tailwind代码与美学一体化实践
  • 2026年7月成都超市货架/成都收银台烟酒柜厂家推荐合集_成都金翊贯货架有限公司 - 行业平台推荐
  • C++数值处理实战:用<limits>头文件构建健壮代码防线
  • 2026年7月定制冷水机/冷水机模组厂家口碑推荐_深圳市酷凌时代科技有限公司 - 品牌宣传支持者
  • 时空数据融合vs传统GIS:公安场景的3大本质区别
  • 第一次训练YOLO模型效果不佳:从数据采集、标注到模型优化的反思
  • GPT-Live实时视频翻译:从原理到企业级部署全解析
  • 数字员工集成路线图 —— 从试点到规模化的三步走策略
  • 从“能传文件”到“管好企业文件”:权限、审计与 LDAP 的价值
  • VC++ ODBC数据库编程实战:从原理到高性能应用开发
  • 计算机二级C语言备考:从死记硬背到编程思维的系统训练
  • AI 自学资料
  • 2026年7月成都药店货架/四川药店货架厂家推荐榜单_成都金翊贯货架有限公司 - 品牌宣传支持者
  • 阿里玄铁 91 当年的“最快开源 CPU“,7 年后还在牌桌上吗?
  • 大模型蒸馏部署全链路实践:从Hugging Face到Tessera的透明化方案
  • Godot 4.2中利用Tree控件构建专业级文件管理器:从原理到实践
  • 伯爵中国官方售后服务中心|全新电话和门店地址权威信息公告(2026年7月最新) - 亨得利钟表维修中心