gpt4 book ai didi

list - redis:原子 LPOP 和 SADD 可能吗?

转载 作者:IT王子 更新时间:2023-10-29 05:56:50 29 4
gpt4 key购买 nike

有没有办法自动从列表中弹出一个项目并将其添加到集合中?

我的案例场景是我有一个独特项目的“工作队列”列表,我想跟踪“进行中”集中正在处理的内容。如果我的工作进程在处理某个项目时崩溃,这也将允许“进行中”集中的项目重新排队。

我希望它是原子的,这样从列表中弹出的任何内容都将始终在集合中。我只是不知道如何使用 MULTI/EXEC 执行此操作,即:

redis> MULTI
OK
redis> LPOP workqueue
"foobar"
redis> SADD inprog "foobar"
redis> EXEC

最佳答案

为什么你希望你的“进行中”收藏是一个集合?您可以简单地为正在进行的项目使用一个列表。

命令RPOPLPUSH “Right Pop,Left Push”正是为这个用例而设计的。

Atomically returns and removes the last element (tail) of the list stored at source, and pushes the element at the first element (head) of the list stored at destination

如果您确实想为正在进行的项目使用 Set,则必须使用 lua 脚本并使用 eval 调用它。 .

关于list - redis:原子 LPOP 和 SADD 可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12135027/

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