gpt4 book ai didi

redis - ZADD 得分最高的成员

转载 作者:可可西里 更新时间:2023-11-01 11:12:38 26 4
gpt4 key购买 nike

是否有可能(或者是否有另一种惯用的方式)ZADD 一个分数为最高现有分数加一的成员?

例如:

> FLUSHDB
> ZADD key 1 one
> ZADD key * mem
> ZSCORE key mem
1) "2"

最佳答案

可以使用zrevrange获取最大分数,然后调用zadd设置分数为largest + 1。没有内置的方法可以做到这一点。但是,您可以写一个 Lua script做这项工作:

local key = KEYS[1]
local field = ARGV[1]
local score = ARGV[2]

if score then
-- client specifies a score, use it
redis.call('zadd', key, score, field)
else
-- get the largest score in the sorted set
local largest = redis.call('zrevrange', key, 0, 0, 'withscores')
score = largest[2]
if score then
-- update the score
score = score + 1
else
-- the sorted set is empty, set a default score
score = 0
end
redis.call('zadd', key, score, field)
end

尝试一下:./src/redis-cli --eval t.lua key , field

关于redis - ZADD 得分最高的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51438450/

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