本文的适用于Redis6.0。
一、流信息条目id
流(stream)中信息条目的ID必须是单调增的,为此,redis采用时间戳+自增id这种方式来保证,并且这两个数都是64bit,不会有溢出问题,最后一点,redis在增加信息条目时会检查当前id与上一条目的id,自动纠正错误的情况,一定要保证后面的id比前面大。
一个流中信息条目的ID必须是单调增的,这是流的基础,所以本文首先强调一下。
几个特殊的ID:
-,+:最小和最大可能出现的Id,也就是“0-1”和“最大整数-最大整数(64位)”
$:当前流中最大的id,可用于将要到来的信息
>:用于XREADGROUP命令中,表示迄今还没有发送给组中使用者的信息
*:用于XADD命令中,让系统自动生成id
*:用于XADD命令中,让系统自动生成id
二、三种应用模式
在官方文档中,redis提到有三种工作模式:
时序数据库模式
XRANGE用于已知上下限,查询出结果,非阻塞,因此有可能返回空。XRANGE命令没什么特别的地方(指采用其他数据结构也能完成类似功能),就是查询信息而已。
日志文件读取模式
XREAD有阻塞和非阻塞两种模式,用于从已知下限开始查询到最大ID,它可以从多个流读取(而XRANGE只能从一个流读取)
非阻塞模式:基本与XRANGE功能相同。
阻塞模式: 比较有用的是等待(阻塞)读取信息,一旦信息产生者发出消息,就取消阻塞