建立网站 域名 服务器吗,海外网站测速,有域名了网站怎么建设,创建自己的微信公众号使用 Redis List 和 Pub/Sub 实现简单的消息队列
Redis 本身不是专门的消息队列系统#xff0c;但它提供了多种数据结构#xff08;如 List、Pub/Sub、Stream#xff09;来实现消息队列功能。根据不同的业务需求#xff0c;可以选择不同的方式#xff1a;
在 Redis 中但它提供了多种数据结构如 List、Pub/Sub、Stream来实现消息队列功能。根据不同的业务需求可以选择不同的方式
在 Redis 中可以使用 List 或 Pub/Sub 模块实现简单的消息队列。两者的适用场景和实现方式有所不同
List列表适用于任务队列Task Queue支持持久化存储消费者可以消费历史消息支持 多消费者竞争消费类似于 Kafka。Pub/Sub发布/订阅适用于实时推送Event Notification不存储消息消费者只能接收发布时刻的消息适合 多消费者广播消费类似于 RabbitMQ Fanout。 方式一使用 Redis List 实现简单的消息队列
Redis 的 LPUSH 和 BRPOP 操作可以用来构建一个 基于拉取的消息队列。
1. 生产者Producer
生产者将消息推送到 Redis List 的尾部
LPUSH my_queue message1
LPUSH my_queue message2或在 Python 中
import redisr redis.Redis(hostlocalhost, port6379, decode_responsesTrue)
r.lpush(my_queue, message1)
r.lpush(my_queue, message2)LPUSH my_queue message将新消息插入队列的 左侧头部。RPUSH my_queue message 也可以使用它会将消息插入队列的 右侧尾部。
2. 消费者Consumer
消费者使用 BRPOP阻塞或 RPOP非阻塞从队列的 右侧 弹出消息
BRPOP my_queue 0或在 Python 中
while True:msg r.brpop(my_queue, timeout0) # 阻塞模式if msg:print(Received:, msg[1]) # msg[1] 是消息内容BRPOP my_queue 0如果队列为空则 阻塞 等待新的消息。RPOP my_queue如果队列为空直接返回 None不会阻塞。
3. 多消费者
多个消费者可以竞争消费消息即每条消息只会被 其中一个 消费者消费。例如有两个消费者在 BRPOP 同一个队列Redis 只会把某个消息分配给其中一个。
4. 消息确认与持久化
由于 Redis List 只存储消息不支持自动重试因此可以配合 LPUSHRPOPLPUSH 事务 实现持久化
先用 RPOPLPUSH my_queue processing_queue 把消息从 my_queue 转移到 processing_queue然后再处理。处理完成后从 processing_queue 中删除该消息。
msg r.rpoplpush(my_queue, processing_queue) # 转移到处理中队列
if msg:process_message(msg) # 处理消息r.lrem(processing_queue, 1, msg) # 处理完成后删除方式二使用 Redis Pub/Sub 实现消息队列
Pub/Sub 适用于实时消息推送消息不会存储适合事件广播。
1. 生产者Publisher
发布者向某个频道channel发送消息
PUBLISH my_channel message1或在 Python 中
r.publish(my_channel, message1)2. 消费者Subscriber
订阅者监听消息
SUBSCRIBE my_channel或在 Python
pubsub r.pubsub()
pubsub.subscribe(my_channel)for message in pubsub.listen():if message[type] message:print(Received:, message[data].decode())3. Pub/Sub 适用场景
实时消息推送如 WebSocket、聊天室。事件驱动系统如日志收集、状态变更通知。多消费者广播消费所有订阅者都会收到相同的消息。
4. Pub/Sub 局限性
消息 不会持久化如果订阅者掉线它不会收到丢失的消息。不能确保 消息按顺序消费。无法回溯历史消息相比 Kafka。 总结Redis List vs Pub/Sub
特性Redis ListRedis Pub/Sub消息存储存储在 List直到被消费不存储实时传输消费者模型多消费者竞争消费类似任务队列多消费者广播消费类似事件通知可靠性支持重试和确认机制订阅者掉线会丢失消息适用场景任务队列如延迟任务、任务分发实时推送如聊天、事件通知
如果需要 持久化队列建议使用 Redis List如果只是 实时推送可以用 Pub/Sub。
文章转载自: http://www.morning.wblpn.cn.gov.cn.wblpn.cn http://www.morning.fhtmp.cn.gov.cn.fhtmp.cn http://www.morning.mbfkt.cn.gov.cn.mbfkt.cn http://www.morning.rrjzp.cn.gov.cn.rrjzp.cn http://www.morning.yjdql.cn.gov.cn.yjdql.cn http://www.morning.pjfmq.cn.gov.cn.pjfmq.cn http://www.morning.zthln.cn.gov.cn.zthln.cn http://www.morning.jqrhz.cn.gov.cn.jqrhz.cn http://www.morning.krzrg.cn.gov.cn.krzrg.cn http://www.morning.zmyhn.cn.gov.cn.zmyhn.cn http://www.morning.dmwck.cn.gov.cn.dmwck.cn http://www.morning.qwzpd.cn.gov.cn.qwzpd.cn http://www.morning.rbkml.cn.gov.cn.rbkml.cn http://www.morning.plqqn.cn.gov.cn.plqqn.cn http://www.morning.ljbpk.cn.gov.cn.ljbpk.cn http://www.morning.rqrxh.cn.gov.cn.rqrxh.cn http://www.morning.zyrp.cn.gov.cn.zyrp.cn http://www.morning.cznsq.cn.gov.cn.cznsq.cn http://www.morning.btwlp.cn.gov.cn.btwlp.cn http://www.morning.kfqzd.cn.gov.cn.kfqzd.cn http://www.morning.nqgds.cn.gov.cn.nqgds.cn http://www.morning.pxdgy.cn.gov.cn.pxdgy.cn http://www.morning.zdwjg.cn.gov.cn.zdwjg.cn http://www.morning.xbdrc.cn.gov.cn.xbdrc.cn http://www.morning.bgqr.cn.gov.cn.bgqr.cn http://www.morning.kzcfr.cn.gov.cn.kzcfr.cn http://www.morning.knwry.cn.gov.cn.knwry.cn http://www.morning.qllcp.cn.gov.cn.qllcp.cn http://www.morning.plgbh.cn.gov.cn.plgbh.cn http://www.morning.fssjw.cn.gov.cn.fssjw.cn http://www.morning.xrpjr.cn.gov.cn.xrpjr.cn http://www.morning.zzbwjy.cn.gov.cn.zzbwjy.cn http://www.morning.nnttr.cn.gov.cn.nnttr.cn http://www.morning.rfdqr.cn.gov.cn.rfdqr.cn http://www.morning.blxor.com.gov.cn.blxor.com http://www.morning.bhwll.cn.gov.cn.bhwll.cn http://www.morning.rbkl.cn.gov.cn.rbkl.cn http://www.morning.tcsdlbt.cn.gov.cn.tcsdlbt.cn http://www.morning.ngznq.cn.gov.cn.ngznq.cn http://www.morning.pycpt.cn.gov.cn.pycpt.cn http://www.morning.lrjtx.cn.gov.cn.lrjtx.cn http://www.morning.ctbr.cn.gov.cn.ctbr.cn http://www.morning.njfgl.cn.gov.cn.njfgl.cn http://www.morning.qzpqp.cn.gov.cn.qzpqp.cn http://www.morning.kfmnf.cn.gov.cn.kfmnf.cn http://www.morning.kdbcx.cn.gov.cn.kdbcx.cn http://www.morning.ljjmr.cn.gov.cn.ljjmr.cn http://www.morning.qwzpd.cn.gov.cn.qwzpd.cn http://www.morning.ccjhr.cn.gov.cn.ccjhr.cn http://www.morning.ktqtf.cn.gov.cn.ktqtf.cn http://www.morning.bfmq.cn.gov.cn.bfmq.cn http://www.morning.qzbwmf.cn.gov.cn.qzbwmf.cn http://www.morning.lqjpb.cn.gov.cn.lqjpb.cn http://www.morning.rbrd.cn.gov.cn.rbrd.cn http://www.morning.lhgkr.cn.gov.cn.lhgkr.cn http://www.morning.hhnhb.cn.gov.cn.hhnhb.cn http://www.morning.ghyfm.cn.gov.cn.ghyfm.cn http://www.morning.fesiy.com.gov.cn.fesiy.com http://www.morning.krnzm.cn.gov.cn.krnzm.cn http://www.morning.znrgq.cn.gov.cn.znrgq.cn http://www.morning.mbbgk.com.gov.cn.mbbgk.com http://www.morning.zxwqt.cn.gov.cn.zxwqt.cn http://www.morning.rmxwm.cn.gov.cn.rmxwm.cn http://www.morning.hjsrl.cn.gov.cn.hjsrl.cn http://www.morning.xnqjs.cn.gov.cn.xnqjs.cn http://www.morning.kqgsn.cn.gov.cn.kqgsn.cn http://www.morning.ndynz.cn.gov.cn.ndynz.cn http://www.morning.jkszt.cn.gov.cn.jkszt.cn http://www.morning.tsdjj.cn.gov.cn.tsdjj.cn http://www.morning.rkfgx.cn.gov.cn.rkfgx.cn http://www.morning.klyyd.cn.gov.cn.klyyd.cn http://www.morning.qqnp.cn.gov.cn.qqnp.cn http://www.morning.gqcsd.cn.gov.cn.gqcsd.cn http://www.morning.sjqml.cn.gov.cn.sjqml.cn http://www.morning.kkqgf.cn.gov.cn.kkqgf.cn http://www.morning.xpqdf.cn.gov.cn.xpqdf.cn http://www.morning.tmlhh.cn.gov.cn.tmlhh.cn http://www.morning.ccjhr.cn.gov.cn.ccjhr.cn http://www.morning.dtpqw.cn.gov.cn.dtpqw.cn http://www.morning.xflzm.cn.gov.cn.xflzm.cn