XADD key [NOMKSTREAM] [MAXLEN|MINID [=|~] threshold [LIMIT count]] *|id field value [field value ...]:向Stream(key)中添加一条消息,ID可以是自动天生或指定的唯一标识符,后面跟着一个或多个字段值对。
这个下令有三个注意点:
消息id要比上个id大
默认用*表示自动天生规矩
*:用于XADD下令,表示让系统自动天生id(雷同于MySQL的自增主键)
示例:
127.0.0.1:6379> xadd k1 * name zhangsan age 18
1715525079420-0 # 系统自动生成的id
127.0.0.1:6379> xadd k1 * name lisi age 19
1715525087805-0
127.0.0.1:6379> xadd k1 * name wangwu age 20
1715525094621-0
127.0.0.1:6379> xadd k1 1715525094621-0 name wangwu age 20 # 重复的id会出错
ERR The ID specified in XADD is equal or smaller than the target stream top item
127.0.0.1:6379> xadd k1 1715525094621-1 name zhaoliu age 21 # 注意这里是 -1
1715525094621-1
127.0.0.1:6379>
复制代码
天生的消息ID,有两部分组成,毫秒时间戳-该毫秒内产生的第1条消息
信息条目指的是序列号,在雷同的毫秒下序列号从0开始递增,序列号是64位长度,理论上在同一毫秒内天生的数据量无法到达这个级别,因此不用担心序列号会不敷用。millisecondsTime指的是Redis节点服务器的本地时间,如果存在当前的毫秒时间戳比以前已经存在的数据的时间戳小的话(本地时间钟后跳),那么系统将会接纳以前雷同的毫秒创建新的ID,也即redis 在增加信息条目时会检查当前 id 与上一条目标 id, 自动纠正错误的情况,一定要保证后面的 id 比前面大,一个流中信息条目标ID必须是单调增的,这是流的基础。
客户端显示传入规则:
Redis对于ID有逼迫要求,格式必须是时间戳-自增Id这样的方式,且后续ID不能小于前一个ID
Stream的消息内容,它的布局雷同Hash布局,以key-value的情势存在。
3. 查询相关下令
3.1 获取指定范围内的消息(XRANGE)
XRANGE key start end [COUNT count]:获取Stream中指定范围内的消息,start和end定义了消息ID的范围,COUNT限定返回结果数量。
127.0.0.1:6379> xrange k1 - + count 2
1715525079420-0
name
zhangsan
age
18
1715525087805-0
name
lisi
age
19
127.0.0.1:6379>
复制代码
-:表示Stream中的最小ID
+:表示Stream中的最大ID
3.2 逆序获取指定范围内的消息(XREVRANGE)
XREVRANGE key end start [COUNT count]:雷同于XRANGE,但消息按逆序返回。
示例: