上一篇
场景引入:
凌晨3点,电商大促的流量洪峰突然袭来 🚀,订单系统每秒接收10万+请求,数据库开始“喘不过气”… 这时,运维小哥淡定地敲下LPUSH orders_queue {订单数据}
——Redis队列像一道缓冲堤坝,稳稳接住所有冲击,后端服务按自己的节奏慢慢消化,这就是Redis队列的魔力!
# 生产者塞数据(左进右出) LPUSH my_queue "任务A" # 👈 队列头部插入 RPUSH my_queue "任务B" # 👉 队列尾部追加 # 消费者取数据 RPOP my_queue # 从尾部取出"任务B" BLPOP my_queue 30 # 阻塞式获取,等不到就睡30秒 😴
适用场景:简单的任务队列、最新消息推送(比如微信未读消息数字提醒)
# 订阅者A监听频道 SUBSCRIBE order_updates # 发布者广播消息 PUBLISH order_updates "订单123已发货" 📢
特点:消息不持久化,订阅者掉线就丢消息,适合实时通知(如直播间弹幕)
# 生产者写入消息流 XADD order_stream * product_id 101 user "VIP用户" # 消费者组消费 XGROUP CREATE order_stream order_group $ XREADGROUP GROUP order_group consumer1 COUNT 1 STREAMS order_stream >
优势:
✅ 消息持久化 + 消费者组负载均衡
✅ 支持ACK确认机制(避免消息丢失)
✅ 可回溯历史消息(类似Kafka)
LTRIM my_queue 0 999
保持最多1000条消息 ✂️ RPOPLPUSH src_queue dest_queue
原子移动消息 EXPIRE queue_key 3600
防堆积 # 查询商品前先查布隆过滤器 BF.EXISTS product_bloom_filter "商品ID" # 不存在直接返回,避免击穿数据库 🛡️
大促前用脚本提前加载:
for product in hot_products: redis.set(f"product:{product.id}", product.details, ex=3600)
LMOVE
(Redis 6.2+) used_memory
,超过70%时触发报警 📈 XCLAIM
命令回收长时间未ACK的消息 Redis队列就像程序世界的“缓冲海绵”🧽,无论是秒杀流量、异步任务还是实时通知,选对数据结构+合理配置,就能让系统稳如老狗,下次遇到高并发时,不妨试试XADD
一把梭!
注:本文操作基于Redis 7.2版本(2025年8月验证),部分命令需注意版本兼容性。
本文由 撒鹍 于2025-08-05发表在【云服务器提供商】,文中图片由(撒鹍)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vds.7tqx.com/wenda/546054.html
发表评论