我正在尝试在Redis中建立FIFO队列,但是我只是担心并发性。如果2个客户端尝试同时执行RPOP操作怎么办?
如果RPOP / LPOP不是原子的,那么如何使用MULTI / EXEC实现原子性?
Redis LPOP / RPOP 操作是原子的吗?
是的,无论是LPOP和RPOP是原子。
如果 2 个客户端尝试同时进行 RPOP 操作怎么办?
如果 的大小LIST等于或大于2,则两个客户端都会获得不同的项目。如果LIST只有一项,则只有一个客户端得到该项,另一个客户端得到空回复。如果LIST为空,则两个客户端都得到空回复。
另一种解决方案
您还可以使用BLPOP或BRPOP来实现FIFO. 这两个命令也是原子的,并且会阻塞为空LIST。有关详细信息,请参阅文档。
| 归档时间: |
|
| 查看次数: |
1166 次 |
| 最近记录: |