首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >redis是否提供了对缓存对象进行部分更新的选项?

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

Stack Overflow用户
提问于 2020-04-24 19:35:14
回答 2查看 2.6K关注 0票数 1

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

代码语言:javascript
复制
{
  "attribute1" : "value1",
   "attribute2 " : [
  {
   "attribute3" : "value3"
  }
]
}

以上是示例json格式。如前所述,是否可以将attribute1的值从value1更新为value2,而不使用redis中的键获取缓存值?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-25 08:11:53

您可以使用Lua脚本,以便使用CJSON库更新项目。我在如何将列表嵌套到Redis中的结构中以减少顶级级别?上分享了一个类似的例子

不熟悉JCA,因此不确定您的客户端是否会使发送埃瓦尔命令变得简单。

票数 0
EN

Stack Overflow用户

发布于 2020-04-27 06:29:03

假设您使用的是JCache API (即JSR-107),您可以使用Cache#invoke(K key, EntryProcessor entryProcessor, Object... arguments)就地执行更新,而不是先到后放。根据javadoc的说法,Cache#invoke是在键上原子地执行的,所以您不必担心对同一个缓存条目的并发修改。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61416146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档