redis 是否提供了对缓存对象进行部分更新的选项

is there option provided by redis to do partial updates to cache objects

我正在使用 JCA(java 缓存 api) 在 redis 中存储数据,其中键是字符串,值是对象,即 JSON 字符串。 我需要对缓存值执行部分更新而不是使用键检索缓存值,然后修改属性并使用最新的缓存值执行放置操作

{
  "attribute1" : "value1",
   "attribute2 " : [
  {
   "attribute3" : "value3"
  }
]
}

以上是示例 json 格式。如上所述,是否可以将 attribute1 的值从 value1 更新为 value2 而无需使用 redis

中的键获取缓存值

您可以使用 Lua 脚本,以便使用 CJSON Lua 库更新项目。我在

上分享了一个类似的例子

不熟悉 JCA,所以不确定您的客户端是否可以简化发送 EVAL 命令的过程。

假设你使用的是JCacheAPI(即JSR-107),你可以使用Cache#invoke(K key, EntryProcessor<K,V,T> entryProcessor, Object... arguments) to perform an update in-place instead of get-then-put. According to EntryProcessor javadocCache#invoke是在key上自动执行的,所以你不必担心对同一缓存条目的并发修改。