栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

多级进程内缓存的更好选择是什么?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

多级进程内缓存的更好选择是什么?

为了便于说明,我使用了类似地图的缓存:

value = Cache.get(key)
比EHCache2更常见
Element

选项1:构造复合键对象

 class CustomerConfigurationKey {    String customerKey;    String dataEntityKey;    // equals() and hashCode() }

这是相当标准的键/值存储库,包括纯地图。我确实在cache2k快速入门中解决了这个问题。

选项2:使用多级缓存

将一个缓存放入一个缓存中,并进行如下访问:

data.get(customerKey).get(dataEntityKey)

您可以在cache2k基准测试DateFormattingBenchmark中找到“复合键”与“多级缓存”的示例

仅当您在第一级有少量设置时,这才可以很好地工作。在您的情况下,您最终将为每个客户提供单独的缓存,这将导致成本高昂。因此,这仅出于完整性考虑,在您的方案中没有实际选择。

选项3:将地图用于第二层

使用构建单个缓存

Cache<String, Map<String, JSONObject>

如果通常在短时间间隔内使用所有客户数据,则在更细的级别上进行缓存是没有意义的,因为客户的所有数据通常都会存储在内存中。另一个示例:当客户不再处于活动状态时,缓存将过期,并且可以从内存中删除所有客户数据。

更新映射的单个条目将具有您需要正确解决的并发问题,例如,通过在缓存中仅复制并放置不可变的映射或使用

ConcurrentHashMap



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/417119.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号