Tim*_*ite 7 queue list set redis
无论如何以原子方式弹出列表中的项目并将其添加到集合中?
我的案例场景是我有一个独特项目的"工作队列"列表,我想跟踪"正在进行"集合中正在处理的内容.如果我的工作进程在处理项目时崩溃,这也将允许"进行中"设置中的项目重新排队.
我更喜欢它是原子的,所以从列表中弹出的任何东西都会在集合中.我只是无法弄清楚如何使用MULTI/EXEC执行此操作,即:
redis> MULTI
OK
redis> LPOP workqueue
"foobar"
redis> SADD inprog "foobar"
redis> EXEC
Run Code Online (Sandbox Code Playgroud)
为什么你希望你的"进行中"集合成为一个集合?您可以简单地使用列表作为进行中的项目.
命令RPOPLPUSH "Right Pop,Left Push"完全是针对此用例而制作的.
以原子方式返回并删除源存储的列表的最后一个元素(尾部),并将元素推送到目标存储的列表的第一个元素(头部)
如果您确实要为正在进行的项目使用Set,则必须使用lua脚本并使用eval调用它.