我使用JCA(java缓存api)在redis中存储数据,其中键是字符串,值是对象,对象是JSON字符串。我需要对缓存值执行部分更新,而不是使用key检索缓存值,然后修改属性并使用最新的缓存值执行put操作。
{
"attribute1" : "value1",
"attribute2 " : [
{
"attribute3" : "value3"
}
]
}以上是示例json格式。如前所述,是否可以将attribute1的值从value1更新为value2,而不使用redis中的键获取缓存值?
发布于 2020-04-25 08:11:53
您可以使用Lua脚本,以便使用CJSON库更新项目。我在如何将列表嵌套到Redis中的结构中以减少顶级级别?上分享了一个类似的例子
不熟悉JCA,因此不确定您的客户端是否会使发送埃瓦尔命令变得简单。
发布于 2020-04-27 06:29:03
假设您使用的是JCache API (即JSR-107),您可以使用Cache#invoke(K key, EntryProcessor entryProcessor, Object... arguments)就地执行更新,而不是先到后放。根据javadoc的说法,Cache#invoke是在键上原子地执行的,所以您不必担心对同一个缓存条目的并发修改。
https://stackoverflow.com/questions/61416146
复制相似问题