Redis之Stream队列

Redis5.0开始引入了Stream这个数据结构,Stream可以很好地用于消息队列,它支持消息持久化,同时可以记录消费者的位置,即使客户端断开重连,也不会丢失消息。

使用 XADD 向队列添加消息,如果指定的队列不存在,则创建一个队列,XADD 语法格式:

1
2
3
4
XADD key ID field value [field value ...]
key :队列名称,如果不存在就创建
ID :消息 id,我们使用 * 表示由 redis 生成,可以自定义,但是要自己保证递增性。
field value : 记录。
1
2
3
4
5
6
redis> XADD mystream * name Sara surname OConnor
"1601372323627-0"
redis> XADD mystream * field1 value1 field2 value2 field3 value3
"1601372323627-1"
redis> XLEN mystream
(integer) 2

XADD 中的key为队列ID,默认为*自动生成,也可以手动指定

1
2
3
XADD mystream 10000000 name Anna  
XADD mystream 10000001 name Bert
XADD mystream 10000002 name Cathy

可以使用MAXLEN选项来限制Stream队列流中的最大元素数量。

在这里插入图片描述

读取Stream队列,想从数据流的开头读取多达100个条目:

1
XREAD COUNT 100 STREAMS mystream 0