Redis - 更新集成员
Redis - Update Set Members
我目前有一个像这样的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}"
让我们假设我需要在 key3
中为任何具有 property1=value7 的成员更新一个集合成员。我该怎么做?
我发现的一种方法是读取集合中的所有成员,然后对该特定集合成员执行 SREM
。但这似乎太繁琐了,有没有更好的方法?
旁注:我正在使用 StackExchange.Redis(以防有办法直接从驱动程序执行此操作)
不,由于底层架构,没有任何方法可以更新 Redis 中的键值。您应该使用 "srem" 删除旧值并使用 "sadd" 命令添加另一个成员。
But this seems too tedious, is there a better way?
我觉得不是,还是看看Redis的架构比较好。在这种情况下重要的是 "srem" 和 "sadd" 命令的复杂性,如果一次添加或删除一个项目则为 O(1),如果添加或删除多个项目则为 O(N)来自集合 .
我目前有一个像这样的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}"
让我们假设我需要在 key3
中为任何具有 property1=value7 的成员更新一个集合成员。我该怎么做?
我发现的一种方法是读取集合中的所有成员,然后对该特定集合成员执行 SREM
。但这似乎太繁琐了,有没有更好的方法?
旁注:我正在使用 StackExchange.Redis(以防有办法直接从驱动程序执行此操作)
不,由于底层架构,没有任何方法可以更新 Redis 中的键值。您应该使用 "srem" 删除旧值并使用 "sadd" 命令添加另一个成员。
But this seems too tedious, is there a better way?
我觉得不是,还是看看Redis的架构比较好。在这种情况下重要的是 "srem" 和 "sadd" 命令的复杂性,如果一次添加或删除一个项目则为 O(1),如果添加或删除多个项目则为 O(N)来自集合 .