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

rfbsl7qr  于 2021-06-09  发布在  Redis
关注(0)|答案(2)|浏览(451)

我使用jca(java缓存api)在redis中存储数据,其中key是string,value是object,object是json字符串。我需要对缓存值执行部分更新,而不是使用键检索缓存值,然后修改属性并使用最新的缓存值执行put操作

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

上面是示例json格式。如上所述,是否可以更新 attribute1value1value2 不使用redis中的key获取缓存值

zpf6vheq

zpf6vheq1#

可以使用lua脚本,以便使用cjson lua库更新项目。我已经分享了一个类似的例子,说明如何将一个列表嵌套到redis的结构中,以减少顶层?
不熟悉jca,所以不确定您的客户机是否能够简化发送eval命令。

j8yoct9x

j8yoct9x2#

假设您使用的是jcacheapi(即jsr-107),那么 Cache#invoke(K key, EntryProcessor<K,V,T> entryProcessor, Object... arguments) 执行就地更新而不是先获取后放置。根据 EntryProcessor javadoc公司, Cache#invoke 在密钥上以原子方式执行,因此您不必担心对同一缓存项的并发修改。

相关问题