redis对xread返回值的保证?

gpnt7bae  于 2021-06-10  发布在  Redis
关注(0)|答案(1)|浏览(474)

xread(或者另一个命令)可以用来自动检测数据是否被写入redis流吗?
更具体地说:
假设您在一个进程中将一些数据添加到redis流中,并看到数据是使用自动生成的键成功添加的。

XADD somestream foo bar

此xadd完成后,您将立即在另一个进程中运行以下读取。

XREAD COUNT 1000 STREAMS somestream 0-0

这个xread保证返回数据吗?文档不清楚成功的xadd是否能保证读者立即看到添加的数据,或者是否会有一些小的延迟。

f5emj3cl

f5emj3cl1#

redis著名的单线程架构回答了这个问题。当你执行 XADD 在一个进程(客户端)和另一个进程(客户端)执行之后 XREAD 然后服务器连续地执行它们,这保证了数据将在 XREAD 已执行。
下面引用的是小redis的书
每个redis命令都是原子的,包括执行多个操作的命令。此外,redis在使用多个命令时支持事务。
您可能不知道,但是redis实际上是单线程的,这就是保证每个命令都是原子的方式。执行一个命令时,不会运行其他命令(我们将在后面的一章中简要地讨论伸缩性。)当您考虑到某些命令执行多种操作时,这一点特别有用。

相关问题