Redis 中的 RPUSH 和 LPUSH 可以赛跑吗?

Can RPUSH and LPUSH in Redis race?

RPUSHLPUSH 上 redis.io 的文档不清楚这些操作在推送多个项目时是否仍然是 O(1) 和事务性的。例如,如果两个客户端对包含多个项目的同一个列表执行 RPUSH,他们的项目是否会散布从而乱序?

tadman 对他的回答的评论最适合我:

由于 Redis 是单线程的,因此不会发生在 "same time" 时发生的事情,一个总是先于另一个,尽管时间通常是您无法控制的。

现在,如果您有两个进程可以以某种方式协调,您可以让一个进程推迟到另一个进程,直到该操作完成。如果您担心这一点,您可以创建某种悲观锁,尽管这只是这里的一种解决方案。

所以简短的回答是,是的,它们将以随机顺序到达。

这就是 Redis 实施 MULTI 命令来对事务进行批处理的原因。这些事务将自动应用。