Stream 数据结构可以被视为一个日志或消息队列,其中每个消息都有一个唯一的 ID,并且按照添加的顺序进行排序。开发人员可以向 Stream 中添加消息、读取消息、删除消息以及订阅消息。Stream 数据结构还支持消费者组,可以让多个消费者并发地处理消息流。
在 Redis 5.0 之前,通过 Redis 的发布订阅(pub/sub)可以实现消息队列的功能,但它有个缺点就是消息无法持久化,如果出现网络断开、Redis 宕机等,消息就会被丢弃。
而 Redis Stream 提供了消息的持久化和主备复制功能,可以让任何客户端访问任何时刻的数据,并且能记住每一个客户端的访问位置,还能保证消息不丢失。
它的特点是支持持久化、消息具有有序性,并且支持分组。主要可以用来做消息队列、日志收集、实时数据处理和聊天室应用等。
- 有序性:消息可以按照发布时间排序,消费者可以按照消息发布的时间顺序进行消费。
- 多消费者支持:多个消费者可以订阅同一个 Stream 并独立消费消息,支持竞争式消费和共享式消费两种消费模式。
- 持久化:Stream 支持消息持久化,即使 Redis 服务器重启或崩溃,之前的消息仍然可以恢复。
- 消息分组:Stream 支持消息分组功能,可以将消息分配到不同的消费组中,从而实现更灵活的消息消费。