认识
2025年01月06日
一、认识
Redis
本质上是一个内存数据库,但它的多种数据结构(如 List
、Stream
、Pub/Sub
等)使其可以用作轻量级的消息队列系统。但是,Redis
最为消息队列可靠性不是很好,Redis
不持久化消息,可能因宕机或订阅者离线导致消息丢失, 不支持多分区、消息优先级等高级特性, 而且,Redis
基于内存存储,消息队列规模较大时,内存压力增加。所以,在消息队列场景中,我们优先选择 Kafka
或 RabbitMQ
。
二、语法
2.1 List
list
基于队列的先进先出 (FIFO
) 原理。通过 RPUSH
将生产者将消息推入队列。通过 LPOP/BRPOP
费者从队列中拉取消息。适用于简单的任务队列。
2.2 Stream
Stream
类似 Kafka
的消息队列,支持持久化、消费跟踪和分组消费。通过 XADD
生产者发布消息。XREADGROUP
:消费者组读取消息。XACK
:确认消息处理完成。适用于高并发场景下的可靠消息队列。
2.3 Pub/Sub
Pub/Sub
一对多的实时消息分发,订阅者离线会丢失消息。通过 PUBLISH
发布消息。通过 SUBSCRIBE
订阅通道。适用于聊天系统、通知推送。
2.4 Sorted Set
Sorted Set
可以按照 score
排序,适合处理带有时间戳的延迟任务。通过 ZADD
添加带有 score
的任务。通过 ZRANGEBYSCORE
按 score
获取任务。ZREM
处理完任务后删除。适用于延迟队列、定时任务。