Bendi新闻
>
缓存之美 —— 如何选择合适的本地缓存?
缓存之美 —— 如何选择合适的本地缓存?
10月前
作者:京东云开发者-京东保险 郭盼
链接:https://my.oschina.net/u/4090830/blog/10768446
1、简介
2、Guava 缓存简介
2.1、缓存过期时间设置
public Cache<String, String> createCache() {
return CacheBuilder.newBuilder()
.expireAfterWrite(5L, TimeUnit.MINUTES)
.build();
}
(2) 基于过期时间
通过对比最近最后一次的访问时间,比如设置 5 分钟,每次访问之后都会刷新过期时间为 5 分钟,只有持续 5 分钟没有被访问到才会过期。
public Cache<String, String> createCache() {
return CacheBuilder.newBuilder()
.expireAfterAccess(5L, TimeUnit.MINUTES)
.build();
}
2.2、缓存容量和淘汰策略设置
public Cache<String, User> createCache() {
return CacheBuilder.newBuilder()
.maximumSize(100L)
.build();
}
(2)限制缓存记录权重
public Cache<String, User> createCache() {
return CacheBuilder.newBuilder()
.maximumWeight(100L)
.weigher((key, value) -> (int) Math.ceil(instrumentation.getObjectSize(value) / 1024L))
.build();
}
2.3 缓存监控
public Cache<String, User> createCache() {
return CacheBuilder.newBuilder()
.recordStats()
.build();
}
2.4 Guava cache 的优劣势和适用场景
3、Caffeine 简介
public Cache<String, String> createCache() {
return Caffeine.newBuilder()
.initialCapacity(1000)
.maximumSize(100L)
.expireAfterWrite(5L, TimeUnit.MINUTES)
.recordStats()
.build();
}
public Cache<String, String> createCache() {
return CacheBuilder.newBuilder()
.initialCapacity(1000)
.maximumSize(100L)
.expireAfterWrite(5L, TimeUnit.MINUTES)
.recordStats()
.build();
}
3.1、对比 Guava cache 的性能主要优化项
3.2、Caffeine 的优劣势和适用场景
4、Ehcache 简介
ResourcePoolsBuilder.newResourcePoolsBuilder()
.heap(20, MemoryUnit.MB)
.offheap(10, MemoryUnit.MB)
.disk(5, MemoryUnit.GB);
5、不同本地缓存对比
框架 | 命中率 | 速度 | 回收算法 | 使用难度 | 集群 | 适用场景 |
---|---|---|---|---|---|---|
Guava cache | 中 | 第三 | LRU、LFU、FIFO | 易 | 不支持 | 读多写少,允许少量缓存偏移 |
Caffeine | 高 | 第一 | W-TinyLFU | 易 | 不支持 | 读多写少,允许少量缓存偏移,能用 Caffeine 就别用 Guava cache |
Ehcache | 中 | 第二 | LRU、LFU、FIFO | 中 | 支持 | 分布式系统中对数据一致性要求高 |
END
AI 领域大佬欢聚一堂 跳起科目三
这里有最新开源资讯、软件更新、技术干货等内容
微信扫码关注该文公众号作者
来源:OSC开源社区
相关新闻
go高并发之路——缓存击穿多线程时如何使用CPU缓存?奇怪的缓存一致性问题Meta 如何将缓存一致性提高到 99.99999999缓存与效果的极限拉扯:从MHA、MQA、GQA到MLA使用Go实现健壮的内存型缓存在夏威夷,新移民如何选择合适的居住区域? |移投路直播间预告美国会乱么?——如何看待美国校园的反战抗议?固定收益 | 债市与资金面的持续背离如何收敛?——利率市场观察厦门大学韩家淮院士团队:为什么新冠疫苗的保护时间如此之短?——有关 COVID-19 疫苗的现状及未来金融专业还值得这届年轻人选择吗?——从科技角度的一些解读缓存七坑,你踩过吗?加拿大政府全揭秘—这个国家的政治体制究竟如何运作?一次关乎国家命运的选择——保东南还是保西北?30年暴涨2000倍:美股之王是如何炼成的?如何避免医美陷阱?看这4点——如何提问才能获得更多信息?——从亲戚的一个问题到医患沟通哪些美高更喜欢视觉艺术特长的学生?| FS问答精选——兴趣特长类如何花3400配置一台室内无噪音,48GB显存的深度学习服务器?新“国九条”发布,如何利好资本市场向上?——历次“国九条”复盘与本次对资本市场的影响Npj Comput. Mater.: 钛合金的力学秘密—双相结构如何成就卓越性能?“老祖宗的管理智慧”——中层领导如何在无实权的情况下如何让下属信服 ?杨东平:如何从应试教育突围?——关于教育源头减负的思考马上行动之四 —— 又一波裁员潮!还没绿卡的你该如果成功突围?!