gpt4 book ai didi

Redis ltrim - 可能的竞争条件?

转载 作者:可可西里 更新时间:2023-11-01 11:05:15 28 4
gpt4 key购买 nike

Redis 的 ltrim 和 rpush 是否存在可能的竞争条件?

例如,假设我的 redis 列表有这些项目:[1, 2, 3, 4, 5]

然后我调用 ltrim list 4 -1这基本上应该将列表切成 [5]

但是让我们说:在 ltrim 开始后的一毫秒和 ltrim 完成之前,另一个线程正在将项目推送到列表:

rpush list 6
rpush list 7

当 2 个 rpushes 和 ltrims 都完成时,结果列表是否包含 [5, 6, 7]?

它可能只是 [5] 吗?换句话说,是否有可能出现竞争条件,其中 ltrim 执行类似使用 [5] 创建临时列表的操作,并在完成 2 次推送后用 [5] 覆盖 [5,6,7]?

最佳答案

简短回答:不,因为命令是原子的。

诚实的回答:我不这么认为,因为我认为操作是原子的;但是,该网站没有明确声明它们是原子的,所以我只有 99.99999999% 确定它们是原子的。

逻辑答案: Redis 是单线程的,因此没有其他线程可以抢占 ltrim 命令。对于在单线程应用程序中出现的竞争条件,它必须在 ltrim 操作完成之前显式跳出并开始做其他事情,这没有多大意义。

关于Redis ltrim - 可能的竞争条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16513115/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com