Java redis集合成员更新的有效方法

Java redis集合成员更新的有效方法,java,node.js,redis,node-redis,Java,Node.js,Redis,Node Redis,我有一台redis电视机。此集合最多可存储20个成员(使用SADD命令添加)。 我的问题是;我需要在需要时更新这些成员。每个成员最多需要修改10次。集合成员是作为字符串的json。我心里只有一个解决方案,让所有成员更新并重新创建该集合。但这似乎是一种幻觉 我知道有ZADDsorted set和它的score支持,这似乎很合适,我还需要用json更新类似score的数据,但我只是想知道有没有什么方法可以有效地更新成员,或者在redis上更新成员是不可接受的 注意:node.js和java客户端都在

我有一台redis电视机。此集合最多可存储20个成员(使用
SADD
命令添加)。 我的问题是;我需要在需要时更新这些成员。每个成员最多需要修改10次。集合成员是作为字符串的json。我心里只有一个解决方案,让所有成员更新并重新创建该集合。但这似乎是一种幻觉

我知道有
ZADD
sorted set和它的score支持,这似乎很合适,我还需要用json更新类似score的数据,但我只是想知道有没有什么方法可以有效地更新成员,或者在redis上更新成员是不可接受的


注意:node.js和java客户端都在使用Redis数据存储。

设置成员本身是不可变的-您可以添加新成员或删除现有成员。就这样

给定集合是一个无序集合的唯一成员,考虑可能的结果是当成员的新值为:

时,理论上可修改成员集合。
  • 与旧值相同-不更改集合
  • 集合中已存在-相当于删除该成员
  • 不是1或2-相当于删除成员并添加新成员

  • 集合成员本身是不可变的-您可以添加新成员或删除现有成员。就这样

    给定集合是一个无序集合的唯一成员,考虑可能的结果是当成员的新值为:

    时,理论上可修改成员集合。
  • 与旧值相同-不更改集合
  • 集合中已存在-相当于删除该成员
  • 不是1或2-相当于删除成员并添加新成员

  • 感谢您的回复,我也考虑过第三种选择,但它似乎不适合多线程应用。所以我决定创建一个新的临时集合,与现有集合建立关系。你能给出具体的建议吗?这是个好办法吗?谢谢。无需-使用MULTI/EXEC块或短Lua脚本使SREM和SADD原子化,并防止任何与线程相关的争用条件。感谢您的回复,我也考虑了第三个选项,但它似乎不适合多线程应用。所以我决定创建一个新的临时集合,与现有集合建立关系。你能给出具体的建议吗?这是个好办法吗?谢谢。无需-使用MULTI/EXEC块或短Lua脚本使SREM和SADD原子化,并防止任何与线程相关的争用情况。您是否考虑过使用MongoDB?@thepirat000已在另一层上使用。该用例似乎适合。查看MongoDB的@thepirat000是的,但在一个不成熟的应用程序中,我无法将该层的操作更改为MongoDB操作。谢谢。你考虑过使用MongoDB吗?@thepirat000已经在另一层上使用了。这个用例似乎很适合。查看MongoDB的@thepirat000是的,但在一个不成熟的应用程序中,我无法将该层的操作更改为MongoDB操作。谢谢