xread(或者另一个命令)可以用来自动检测数据是否被写入redis流吗?
更具体地说:
假设您在一个进程中将一些数据添加到redis流中,并看到数据是使用自动生成的键成功添加的。
XADD somestream foo bar
此xadd完成后,您将立即在另一个进程中运行以下读取。
XREAD COUNT 1000 STREAMS somestream 0-0
这个xread保证返回数据吗?文档不清楚成功的xadd是否能保证读者立即看到添加的数据,或者是否会有一些小的延迟。
xread(或者另一个命令)可以用来自动检测数据是否被写入redis流吗?
更具体地说:
假设您在一个进程中将一些数据添加到redis流中,并看到数据是使用自动生成的键成功添加的。
XADD somestream foo bar
此xadd完成后,您将立即在另一个进程中运行以下读取。
XREAD COUNT 1000 STREAMS somestream 0-0
这个xread保证返回数据吗?文档不清楚成功的xadd是否能保证读者立即看到添加的数据,或者是否会有一些小的延迟。
1条答案
按热度按时间f5emj3cl1#
redis著名的单线程架构回答了这个问题。当你执行
XADD
在一个进程(客户端)和另一个进程(客户端)执行之后XREAD
然后服务器连续地执行它们,这保证了数据将在XREAD
已执行。下面引用的是小redis的书
每个redis命令都是原子的,包括执行多个操作的命令。此外,redis在使用多个命令时支持事务。
您可能不知道,但是redis实际上是单线程的,这就是保证每个命令都是原子的方式。执行一个命令时,不会运行其他命令(我们将在后面的一章中简要地讨论伸缩性。)当您考虑到某些命令执行多种操作时,这一点特别有用。