我的应用程序需要缓存非可序列化对象以提高性能。这些非可序列化对象是从外部资源构建的内存模型。例如,验证模板以XML格式存储在数据库中,通过解析XML构建内存模型。构建内存模型相对昂贵,因此缓存可以提高性能。但是,当基础记录更改时,需要从数据库重新加载内存模型。
在单个应用程序场景中,我将对象存储在简单的映射中。当数据库中的记录更改时,重新构建内存模型并替换映射中的旧条目。
在分布式场景中,我需要使失效消息在集群中传播,以便所有节点在记录更改时重建内存模型。我已经查看了Infinispan和Hazelcast,它们都要求所有缓存对象都必须是可序列化的。然而,如果缓存以无效模式运行(数据不跨网络发送),我不明白为什么缓存对象需要是可序列化的。
在这种情况下通常使用哪些技术?这种情况是否不寻常(即我应该做些不同的事情)?
在单个应用程序场景中,我将对象存储在简单的映射中。当数据库中的记录更改时,重新构建内存模型并替换映射中的旧条目。
在分布式场景中,我需要使失效消息在集群中传播,以便所有节点在记录更改时重建内存模型。我已经查看了Infinispan和Hazelcast,它们都要求所有缓存对象都必须是可序列化的。然而,如果缓存以无效模式运行(数据不跨网络发送),我不明白为什么缓存对象需要是可序列化的。
在这种情况下通常使用哪些技术?这种情况是否不寻常(即我应该做些不同的事情)?