xrevrange 命令
xrevrange命令与XRANGE
完全相同,但显著的区别是以相反的顺序返回条目,并以相反的顺序获取开始-结束参数:在XREVRANGE
中,你需要先指定结束ID,再指定开始ID,该命令就会从结束ID侧开始生成两个ID之间(或完全相同)的所有元素。
语法
XREVRANGE key end start [COUNT count]
- key:队列名。
- end:结束值,+ 表示最大值。
- start:开始值,- 表示最小值。
- count:数量。
返回值
此命令返回ID在指定区间的条目,从较高的ID到较低的ID中匹配。返回的条目是完整的,这意味着将返回ID及其组成的所有字段。此外,返回的条目及其字段和值的顺序与以使用XADD
添加的完全相同。
例子
例如,要获得从较高ID到较低ID的所有元素,可以使用:
XREVRANGE + -
类似于只获取添加到流中的最后一个元素,可以使用:
XREVRANGE + - COUNT 1
使用XREVRANGE迭代
与XRANGE
一样,此命令可以用于迭代整个流的内容,但请注意,在这种情况中,下一个命令调用应该使用最后一个条目的ID,序列号减1。但如果序列号已经是0,则ID的时间部分应该减1,且序列号部分应该设置成最大可能的序列号,即18446744073709551615,或者可以完全省略,命令将自动假设它是这样一个数字。
redis> XREVRANGE writers + - COUNT 2 1) 1) 1526985723355-0 2) 1) "name" 2) "Ngozi" 3) "surname" 4) "Adichie" 2) 1) 1526985712947-0 2) 1) "name" 2) "Agatha" 3) "surname" 4) "Christie"
返回的最后ID是1526985712947-0
,因为序列号已经是0,下一个ID我将不使用特殊ID+
,而是1526985712946-18446744073709551615
,或者只是18446744073709551615
:
redis> XREVRANGE writers 1526985712946-18446744073709551615 - COUNT 2 1) 1) 1526985691746-0 2) 1) "name" 2) "Toni" 3) "surname" 4) "Morris" 2) 1) 1526985685298-0 2) 1) "name" 2) "Jane" 3) "surname" 4) "Austen"
例子
redis> XADD writers * name Virginia surname Woolf "1539863673862-0" redis> XADD writers * name Jane surname Austen "1539863673863-0" redis> XADD writers * name Toni surname Morris "1539863673865-0" redis> XADD writers * name Agatha surname Christie "1539863673866-0" redis> XADD writers * name Ngozi surname Adichie "1539863673867-0" redis> XLEN writers (integer) 5 redis>XREVRANGE writers + - COUNT 1 1) 1) "1539863673867-0" 2) 1) "name" 2) "Ngozi" 3) "surname" 4) "Adichie"