是否可以将 MAP 作为值存储到 Hazelcast 中的 MULTIMAP 中?

Is it possible to store MAP as a value into MULTIMAP in the Hazelcast?

提问人:Sachin Pandkar 提问时间:5/4/2021 更新时间:5/4/2021 访问量:213

问:

是否可以将 MAP 作为值存储到 Hazelcast 中的 MULTIMAP 中? 请在下面找到示例代码,

Map<String , String > userSessionData = client.getMap(“userSessionData”); userSessionData.put(userId, userData.getSessionId());

MultiMap <String , Map <String , String >> institutionUsersData = client.getMultiMap( “institutionUsersData” ); institutionUsersCache.put(机构名称,userSessionData);

在尝试使用上述代码时,它会在下面抛出异常,

com.hazelcast.nio.serialization.HazelcastSerializationException:无法序列化“com.hazelcast.client.proxy.ClientMapProxy” 在 com.hazelcast.internal.serialization.impl.SerializationUtil.handleSerializeException(SerializationUtil.java:82) 在 com.hazelcast.internal.serialization.impl.AbstractSerializationService.toBytes(AbstractSerializationService.java:157) 在 com.hazelcast.internal.serialization.impl.AbstractSerializationService.toBytes(AbstractSerializationService.java:133) 在 com.hazelcast.internal.serialization.impl.AbstractSerializationService.toData(AbstractSerializationService.java:118) 在com.hazelcast.internal.serialization.impl.AbstractSerializationService.toData(AbstractSerializationService.java:106) 在com.hazelcast.client.spi.ClientProxy.toData(ClientProxy.java:98) 在 com.hazelcast.client.proxy.ClientMultiMapProxy.put(ClientMultiMapProxy.java:112)

原因:com.hazelcast.nio.serialization.HazelcastSerializationException:类 com.hazelcast.client.proxy.ClientMapProxy 没有合适的序列化程序 在 com.hazelcast.internal.serialization.impl.AbstractSerializationService.serializerFor(AbstractSerializationService.java:487) 在 com.hazelcast.internal.serialization.impl.AbstractSerializationService.toBytes(AbstractSerializationService.java:146)

字典 缓存 Hazelcast 多映射 分布式缓存

评论


答:

0赞 Neil Stevenson 5/4/2021 #1

Hazelcast地图故意不可序列化,因为它们是远程和并发的。由于使用地图的其他客户端的插入/更新/删除,内容将发生变化。

如果检索地图的 . 这可能比客户可以承受的要大。entrySet()

要将此快照存储回 Hazelcast,它需要放在可序列化的集合中,例如 .HashMap

如果是会话,则此类快照将显示用户在某个时间点,并且不会随着用户登录和注销而更改。