目前,我正在尝试更新已排序的set成员。查看文档时,使用ZADD似乎应该更新成员(如果其分数已经存在)。但是,使用此代码尝试更新成员时,

db.zadd("users", parseInt(key, 10) + 1, JSON.stringify(newData));

....即使分数已经存在,也会添加一个新条目!如何使用Redis更新排序后的集合成员?

最佳答案

只要条目之间的键和成员匹配,ZADD就会替换旧成员的分数:

redis localhost:6379> ZADD test-key 40 blah
(integer) 1
redis localhost:6379> ZRANGE test-key 0 -1 WITHSCORES
1) "blah"
2) "40"
redis localhost:6379> ZADD test-key 45 blah
(integer) 0
redis localhost:6379> ZRANGE test-key 0 -1 WITHSCORES
1) "blah"
2) "45"

也许您在ZADD命令之间使用了不同的键或成员?

10-06 13:51