跳到主要内容

认识

2025年01月06日
柏拉文
越努力,越幸运

一、认识


Redis 本质上是一个内存数据库,但它的多种数据结构(如 ListStreamPub/Sub 等)使其可以用作轻量级的消息队列系统。但是,Redis 最为消息队列可靠性不是很好,Redis 不持久化消息,可能因宕机或订阅者离线导致消息丢失, 不支持多分区、消息优先级等高级特性, 而且,Redis 基于内存存储,消息队列规模较大时,内存压力增加。所以,在消息队列场景中,我们优先选择 KafkaRabbitMQ

二、语法


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 的任务。通过 ZRANGEBYSCOREscore 获取任务。ZREM 处理完任务后删除。适用于延迟队列、定时任务。