在Redisson RMap中存储嵌套地图时的线程安全

问题描述

我正在Java环境中使用Redisson来使某些数据结构分布式,以便可以在多线程环境中从多个Tomcat实例访问它们。

我计划具有如下定义的嵌套地图数据结构:

protected RMap<String,ConcurrentHashMap<String,Object >>> aMap = new ConcurrentHashMap<>();

根据Redisson文档,认情况下RMap是线程安全的。 但是,我不确定修改嵌套在RMap中的ConcurrentHashMaps实例之一时会发生什么。 使用Redisson时,通常在RMap中使用并发哈希映射是一种好习惯吗?我是否通过这种方法为不可预见的并发相关问题铺平了道路?如果没有,有什么更好的方法? 谢谢。

解决方法

但是,我不确定修改嵌套在RMap中的ConcurrentHashMaps实例之一时会发生什么情况

您需要再次调用RMap.put方法。

使用Redisson时,通常在RMap中使用并发哈希映射是一种好习惯吗?

改为使用RMap对象。 Redisson允许将RMap存储在RMap中。