关于多线程订阅redis的消息

博客探讨了在使用Redis发布订阅功能时遇到的处理速度问题和多线程消费导致的数据不一致。作者建议,对于复杂的订阅逻辑,可以考虑使用消息队列(MQ)如Kafka,或者利用Redis的FIFO数据结构如List进行优化。同时,提出了避免重复消费和提高消费效率的思考。
摘要由CSDN通过智能技术生成

公司项目原来的一个心跳功能是用的redis发布订阅,发现处理速度远远跟不上,然后我试了上多线程,直接重复消费还有数量都对不上了(开了10个线程,每个线程10条数据,但是消费了不到100条,我是想就消费10条,重复消费没有意义)。

在redis发布订阅中,多个订阅者可以订阅相同的频道,频道内的数据会分发到各个订阅者,不会出现某一个订阅者消费了之后,另一个订阅者读不到该数据的情况。这就会出现重复消费。

也有可能可以在发布订阅中实现比如kafka那种消费偏移量的记录,消费位移提交等等,不过我也懒得研究了。毕竟我认为redis可以搞一些简单的发布订阅,如果你的某个频道订阅逻辑复杂,尝试拆分为几个频道或者干脆点直接上MQ吧,专业的事情专业的来。

如果你还想图省事,可以试试先进先出的list,比如发布消息都是rpush,出都是lpop。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值