Redis 队列基本命令介绍,一文读懂
Redis 是一个高性能的键值存储系统,支持多种数据结构,其中 List(列表) 和 Stream(流) 是实现队列功能的常用数据结构。以下是 Redis 队列的两种主要实现方式及其特点:
---
核心命令
入队:`LPUSH queue_name value`(左侧插入)或 `RPUSH queue_name value`(右侧插入)。
出队:`RPOP queue_name`(右侧弹出)或 `LPOP queue_name`(左侧弹出)。
阻塞式出队:`BRPOP queue_name timeout`(右侧阻塞弹出,避免空轮询)。
示例
```bash
# 生产者:入队
LPUSH my_queue "task1"
LPUSH my_queue "task2"
# 消费者:出队 RPOP my_queue # 返回 "task1"(FIFO) ```
特点
简单高效:适合轻量级任务队列。
无持久化保证:数据依赖 Redis 的持久化配置(RDB/AOF)。
无消息确认:消费者崩溃可能导致消息丢失。
无优先级:所有消息按顺序处理。
---
核心命令
生产者:`XADD stream_name * field1 value1 field2 value2`(添加消息)。
消费者组:
`XGROUP CREATE stream_name group_name $ MKSTREAM`(创建消费者组)。
`XREADGROUP GROUP group_name consumer_name COUNT 1 STREAMS stream_name >`(读取消息)。
消息确认:`XACK stream_name group_name message_id`(确认消息已处理)。
阻塞读取:`XREAD BLOCK 0 STREAMS stream_name`(阻塞等待新消息)。
示例
```bash
# 生产者:添加消息
XADD my_stream * task "process_data"
# 消费者组:创建组 XGROUP CREATE my_stream my_group $ MKSTREAM
# 消费者:读取消息(需指定消费者名称) XREADGROUP GROUP my_group consumer1 COUNT 1 STREAMS my_stream >
# 确认消息处理 XACK my_stream my_group 1630000000000-0 ```
特点
消费者组:多个消费者可以并行处理不同消息,避免重复消费。
消息确认:防止消费者崩溃导致消息丢失。
历史消息:支持从任意位置读取历史消息。
复杂度较高:适合需要可靠性的场景(如订单处理、日志分发)。
---
核心命令
订阅:`SUBSCRIBE channel_name`。
发布:`PUBLISH channel_name message`。
特点
即时性:消息无持久化,离线消费者会丢失消息。
无状态:适合实时性要求高但无需可靠性的场景。
如果需要更复杂的队列功能(如延迟队列、重试机制),可以考虑结合 Redis 与专业消息队列(如 RabbitMQ、Kafka)。
END
云服务器活动(最新)

扫码添加站长好友
文章投稿、业务合作、咨询等
技术交流、问题反馈等