gpt4 book ai didi

list - 如何以原子方式将项目添加到具有固定数量元素的虚拟列表中?

转载 作者:可可西里 更新时间:2023-11-01 11:13:36 25 4
gpt4 key购买 nike

我们有固定大小的列表,这些列表将由不同的进程同时填充。有没有一种方法可以在不使用 TRANSACTIONS 的情况下执行此操作?

例如,是否存在原子操作,仅当列表的大小小于 X 时才向列表添加项目?

最佳答案

没有单个命令可以仅在列表包含的项目少于 n 时将项目添加到列表中。您需要将它们包装到事务中才能使它们成为“原子”。在没有事务的情况下实现原子调用的唯一方法是通过 LUA 脚本。沿线的东西(伪代码):

local len = redis.call("LLEN", KEYS[1])
if len >= ARGV[1] then
return nil
end
redis.call("LPUSH", KEYS[1], ARGV[2])
return ARGV[2]

您可以使用列表的键名 (KEYS[1])、列表的最大长度 (ARGV[1]) 和应该放在列表中的项目 (ARGV[ 2]).只有当列表的长度小于最大值时,才会添加并返回该项目。如果列表长度大于等于最大值,则返回“nil”。

关于list - 如何以原子方式将项目添加到具有固定数量元素的虚拟列表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26380210/

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