Redis-更新集成员

时间:2018-09-19 09:09:10

标签: redis stackexchange.redis

我目前有这样的redis设置,

redis in01apv16:6379> smembers key1
1) "{property1:value4,property2:value5,property3:value6}"
2) "{property1:value1,property2:value2,property3:value3}"

redis in01apv16:6379> smembers key2
1) "{property1:value1,property2:value2,property3:value3}"

redis in01apv16:6379> smembers key3
1) "{property1:value1,property2:value2,property3:value3}"
2) "{property1:value7,property2:value8,property3:value9}"

让我们假设我需要为具有property1 = value7的成员更新key3中的set成员。我该怎么做?

我发现的一种方法是读取集合中的所有成员,然后对该特定集合成员执行SREM。但这似乎太乏味了,有没有更好的方法?

侧面注意:我正在使用StackExchange.Redis(如果有直接从驱动程序执行此操作的方式)

1 个答案:

答案 0 :(得分:0)

由于底层架构,因此没有任何方法可以更新Redis中的key值。您应该使用“ srem”删除旧值,然后使用“ sadd”命令添加另一个成员。

  

但这似乎太乏味了,有没有更好的方法?

我不这样认为,最好阅读有关Redis架构的信息。在这种情况下,重要的是“ srem”和“ sadd”命令的复杂度,如果一次添加或删除一项,则复杂度为O(1),如果从集合中添加或删除了多项,则复杂度为O(N)。 / p>