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]?