重点回顾
-
虽然使用列表、有序集合以及发布与订阅都可以实现消息队列,但这些实现都有它们各自的优缺点,流的出现解决了这一问题,它是实现消息队列的最佳选择。
-
流是一个包含零个或任意多个流元素的有序队列,队列中的每个元素都包含一个ID和任意多个键值对,这些元素会根据ID的大小在流中有序地进行排列。
-
流元素的ID由 “毫秒时间” 和 “顺序编号” 两个部分组成,其中使用UNIX时间戳表示的毫秒时间用于标识与元素相关联的时间,而以0为起始值的顺序编号则用于区分同一时间内产生的多个不同元素。
-
通过将元素ID与时间进行关联,并强制要求新元素的ID必须大于旧元素的ID,Redis从逻辑上将流变成了一种只执行追加操作的数据结构,这种特性对于使用流实现消息队列和事件系统的用户来说是非常重要的。
-
Redis流的消费者组允许用户将一个流从逻辑上划分为多个不同的流,并让消费者组属下的消费者去处理组中的消息。
-
一条消费者组消息从出现到处理完毕,需要经历以下阶段:不存在;未递送;待处理;已确认。