我想知道是否有一种方法可以检查 redis 排序集是否已经存在。如果有序集存在,则向其中添加元素,否则什么也不会发生。
由于使用pipeline
执行此操作,因此每次从redis中检查排序集是否存在都会花费大量成本。
最佳答案
您可以在管道中运行 Lua 脚本 - 以下脚本会将所有参数添加到提供的键(前提是该键存在):
local exists = redis.call('EXISTS', KEYS[1])
if exists == 1 then
redis.call('ZADD', KEYS[1], unpack(ARGV))
end
注意:这里没有错误检查(即键的类型是 zset,参数有效......)以节省 CPU 周期并简化示例。也没有返回代码 - 如果需要,请添加它。
关于Redis:有没有办法仅在集合存在时才添加到排序集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38136907/