gpt4 book ai didi

Redis Streams 在 XDEL 之后阻塞 XREAD 的不一致行为

转载 作者:IT王子 更新时间:2023-10-29 06:07:13 24 4
gpt4 key购买 nike

在XDEL 之后调用XREAD 不会阻塞流,而是立即返回。预期的行为是 XREAD 再次阻塞。

127.0.0.1:6379> XADD my-stream * field1 string1
"1554300150697-0"
127.0.0.1:6379> XREAD BLOCK 5000 STREAMS my-stream 1554300150697-0
(nil)
(5.07s)
127.0.0.1:6379> XADD my-stream * field2 string2
"1554300285984-0"
127.0.0.1:6379> XREAD BLOCK 5000 STREAMS my-stream 1554300150697-0
1) 1) "my-stream"
2) 1) 1) "1554300285984-0"
2) 1) "field2"
2) "string2"
127.0.0.1:6379> XDEL my-stream 1554300285984-0
(integer) 1
127.0.0.1:6379> XLEN my-stream
(integer) 1
127.0.0.1:6379> XREAD BLOCK 5000 STREAMS my-stream 1554300150697-0
1) 1) "my-stream"
2) (empty list or set)
127.0.0.1:6379>

正如您在上面看到的,第一次调用 XREAD 时它会阻塞 5 秒 - 预期。

对 XREAD 的第二次调用立即返回,给出新条目 - 预期。

对 XREAD 的第三次调用立即返回 (空列表或集合) - 不是预期的!预期:命令应阻塞 5 秒。

我不确定这是一个错误还是我遗漏了什么。请指教。

谢谢

最佳答案

看起来您遇到了 this known bug .

请特别查看第二条评论,它指出所提供的部分修复无法解决您遇到的问题:

It's not an entire fix for the blocking issue, since it only fixes the blocking behaviour for empty streams.

If the stream still contains some entries, but none with a larger ID than requested by the last-received-id parameter, then the request is still answered synchronously with an empty result list.

关于Redis Streams 在 XDEL 之后阻塞 XREAD 的不一致行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55497990/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com