Redis LPOP / RPOP是原子操作吗?

时间:2018-04-16 03:01:22

标签: redis

我正在尝试在Redis中构建FIFO队列,但我只是担心并发性。如果2个客户端同时尝试进行RPOP操作怎么办?

如果RPOP / LPOP不是原子的,那么如何使用MULTI / EXEC实现原子性?

1 个答案:

答案 0 :(得分:3)

  

Redis LPOP / RPOP操作是原子的吗?

是的,LPOPRPOP都是原子的。

  

如果2个客户端同时尝试进行RPOP操作怎么办?

如果LIST的大小等于或大于2,则两个客户端都会获得不同的项目。如果LIST只有一个项目,则只有一个客户端获取该项目,而另一个客户端获得空回复。如果LIST为空,则两个客户端都会收到空回复。

另一种解决方案

您还可以使用BLPOPBRPOP来实施FIFO。这两个命令也是原子的,将阻塞空LIST。有关详细信息,请参阅文档。