如何更改排序集中的数据?
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
我在 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