Redis:我们可以使用相对于当前时间的过去时间戳中的 ID 进行 XADD

问题描述 投票:0回答:1

我想用ID保存过去时间相对于当前时间的数据。

示例:

Last Id: (None)
Current Time: 1904878793327

跑步:

xadd test 1804878793327-1 test 123

会抛出错误,

ERR The ID specified in XADD is equal or smaller than the target stream top item

即使插入的条目没有,我也无法插入时间戳相对于当前时间更早的新条目。

知道如何实现这一目标吗?

redis
1个回答
0
投票

这与时间戳无关。

创建 Steam 后,您可以使用任何您喜欢的 id:

redis> DEL test
(integer) 0
redis> XADD test 2-2 a b
"2-2"
redis> XREAD STREAMS test 0-0
1) 1) "test"
   2) 1) 1) "2-2"
         2) 1) "a"
            2) "b"
redis> XDEL test 2-2
(integer) 1

但是,无法添加 id 低于或等于最后一个 id 的其他项目,即使该项目已从流中删除:

redis> XADD test 1-1 c d
(error) ERR The ID specified in XADD is equal or smaller than the target stream top item

可以看到内部保存了最后一个id:

redis> XINFO STREAM test
 1) "length"
 2) (integer) 0
...
 7) "last-generated-id"
 8) "2-2"
...
© www.soinside.com 2019 - 2024. All rights reserved.