排序设置前提条件以检查新添加的分数是否最高

问题描述 投票:0回答:1

我们正在研究一种解决方案,仅当新实体的分数是现有 Redis 排序集中所有实体中最高的时,我们才添加新实体。

是否有前提条件检查可以保证这种行为。

redis stackexchange.redis
1个回答
0
投票

可以用Lua脚本解决:

-- add_only_large_enough.lua
local key = KEYS[1]
local member = ARGV[1]
local score = ARGV[2]

local largest_item = redis.call('zrange', key, -1, -1, 'withscores')
if next(largest_item) == nil or largest_item[2] < score then
    redis.call('zadd', key, score, member)
    return 1
else
    return 0
end

像这样运行它:

redis-cli --eval add_only_large_enough.lua sorted_set_key , member score

© www.soinside.com 2019 - 2024. All rights reserved.