【发布时间】:2013-05-13 08:00:31
【问题描述】:
Redis 的 ltrim 和 rpush 是否存在竞争条件?
例如,假设我的 redis 列表有这些项目: [1、2、3、4、5]
我打电话给ltrim list 4 -1
这基本上应该将列表切成 [5]
但是让我们说:在 ltrim 开始之后和 ltrim 完成之前的一毫秒,另一个线程正在将项目推送到列表中:
rpush list 6
rpush list 7
当 2 个 rpush 和 ltrim 都完成后,结果列表是否会由 [5, 6, 7] 组成?
可能只是 [5] 吗?换句话说,是否存在竞争条件,其中 ltrim 会使用 [5] 创建一个临时列表,并在 2 次 rpush 完成后用 [5] 覆盖 [5,6,7]?
【问题讨论】:
标签: redis