如何更改排序集中的数据?

How to change data in sorted set?

我在 Redis 中使用排序集数据类型。 我使用命令 zadd 添加数据。添加数据为 JSON 格式。

如何更改这个按分数排序的集合中的值? 我需要获取 JSON 值并更改一个字段,然后更新此排序集。

我尝试添加相同分数的 againg 数据,但我得到了重复数据

不会更新集合的(已排序或未排序的)成员。您必须删除旧成员并添加具有相关分数的新成员(已更新 JSON)。您可以将其包装在 Lua 或 WATCH/MULTI/EXEC 块中以获得原子性。

很简单!

ZREM key data;
ZADD key score newdata;

您根本无法更新 SET 结构中的元素。这在定义上是不可能的!就像我不能吃一杯水,我只能喝它^_^

如有问题请回复。

顺便说一下,我不知道您的应用需求,但我强烈感觉 SORTED SET 不适合您的应用场景。

如果您将列表用作键(分数)=> 值存储,则可以先按分数删除。

ZREMRANGEBYSCORE key score score
ZADD key score data