Redis Stream类型的使用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis Stream类型的使用相关的知识,希望对你有一定的参考价值。
参考技术A最近在看 redis 这方面的知识,发现在 redis5 中产生了一种新的数据类型 Stream ,它和 kafka 的设计有些类似,可以当作一个简单的消息队列来使用。
解释:
xadd 命令 返回的是数据的id, xx-yy (xx指的是毫秒数,yy指的是在这个毫秒内的第几条消息)
指定指定Stream的大小比模糊指定Stream的大小会稍微多少消耗一些性能。
~ 模糊指定流的大小,可以看到指定的是1,实际上已经到了3.
使用redis的事务操作,获取到同一毫秒产生的多条数据,时间戳一样,序列号不一样
-: 表示最小id的值
+: 表示最大id的值
(: 表示开区间
直接写 毫秒 不写后面的序列号即可。
start 和 end 的值写的一样即可获取单挑数据。
使用 count 进行限制
使用方式和 XRANGE 类似,略。
需求: 往Stream中加入3条消息,然后删除第2条消息
注意:
需要注意的是,我们从Stream中删除一个消息,这个消息并不是被真正的删除了,而是被 标记为删除 ,这个时候这个消息还是占据着内容空间的。如果所有Stream中所有的消息都被标记删除,这个时候才会回收内存空间。但是这个Stream并不会被删除。
查看Stream中元素的长度
注意:
如果 xlen 后方的 key 不存在则返回0,否则返回元素的个数。
上方的意思是,保留 stream-key 这个Stream中最后的2个消息。
minid 是删除比这个id小的数据,本地测试的时候 没有测试出来 ,略。
XREAD 只是读取消息,读取完之后并不会删除消息。 使用 XREAD 读取消息,是完全独立与消费者组的,多个客户端可以同时读取消息。
count 限制单次读取最后的消息,因为当前读取可能没有这么多。
即读取队列尾的下一个消息,在非阻塞模式下始终是 nil
注意:
1、创建Stream的名称是 stream-key
2、创建2个消息,aa和bb
$ 表示从最后一个元素消费,不包括Stream中的最后一个元素,即消费最新的消息。
1636362619125-0 某个消息的具体的ID,这个 g3 消费者组中的消息都是 大于> 这个id的消息。
也可以通过 xautoclaim 来实现。
以上是关于Redis Stream类型的使用的主要内容,如果未能解决你的问题,请参考以下文章
Redis基础 -- 流(stream)类型 和 流(stream)类型的常用命令