框架与类库:caffeine
缓存之美:Guava Cache 相比于 Caffeine 差在哪里?
Guava Cache通过分段锁、volatile变量和LRU算法实现缓存管理,性能较Caffeine稍逊。其核心结构为Segment,采用头插法维护单向链表,并通过accessQueue、writeQueue和recencyQueue管理元素生命周期。Caffeine则基于ConcurrentHashMap,采用TinyLFU算法和时间轮机制,性能更优。Guava Cache适合低并发场景,Caffeine则在高并发和复杂缓存需求中表现更佳。
缓存之美:万文详解 Caffeine 实现原理(下)
Caffeine缓存通过getIfPresent
和put
方法实现高性能读写,核心是TinyLFU算法结合频率草图优化缓存命中率。采用分段设计的MPSC缓冲区(ReadBuffer
/WriteBuffer
)减少竞争,维护方法动态调整窗口区、试用区和保护区的元素分布。驱逐策略基于频率和LRU混合判定,结合climb
方法自适应分区大小,适合高并发场景,兼顾内存效率与访问性能。
本地缓存 Caffeine 中的时间轮(TimeWheel)是什么?
Caffeine缓存通过时间轮机制实现高效的元素过期管理。时间轮采用分层结构,将元素按过期时间分配到不同层级,如秒、分钟、小时等。元素添加时计算过期时间并分配到相应层级,随着时间推移,元素可能被重新分配到更低层级或直接过期驱逐。这种机制确保过期检查仅针对可能过期的元素,提升缓存性能。
缓存之美:万文详解 Caffeine 实现原理(上)
Caffeine缓存通过ConcurrentHashMap存储数据,采用窗口区、试用区和保护区管理元素生命周期,各区使用LRU算法的双端队列。TinyLFU算法优先驱逐低频元素,Count-Min Sketch记录访问频率,保证高准确率且内存占用少。读写操作分别通过MPSC模式的ReadBuffer和WriteBuffer添加任务,由maintenance方法异步执行,确保缓存高效运行。
Caffeine学习笔记
Caffeine是一个基于Java8开发的提供了近乎最佳命中率的高性能的缓存库, 也是SpringBoot内置的本地缓存实现。
缓存框架 Caffeine 的可视化探索与实践
本文基于Caffeine已有的基础进行定制化开发实现可视化功能。
Java本地高性能缓存实践
本篇文章覆盖了本地缓存,且突出探讨高性能的本地缓存。
Caffeine如何变热?
当有新数据需要放到缓存时,Cache将需要淘汰的数据,通过TinyLFU来决定是否用新数据替代被淘汰的数据,来提升命中率。 TinyLFU本质是布隆过滤器的变种,其使用Count–Min Sketch算法,可以用极小的内存,来实现大量数据统计。
如何把 Caffeine Cache 用得如丝般顺滑?
本文从最常用的 get 方法入口,结合源代码,细数作者使用 Caffeine Cache 过程中遇到的各种坑和思考,作为闭坑指南分享给各位看官。
为什么搜索服务使用Caffeine Cache做本地缓存
使用 Redis、Memcached 缓存能够显著提高性能,但仍需要一次甚至多次网络IO。本文介绍的 Caffine Cache 将一个看似简单的本地缓存功能优化推向了另一个高度,甚至形成了一套方法论,对于任何复杂的工程实现都有启发意义。
高性能缓存 Caffeine 原理及实战
结合项目实战讲述如何正确使用Caffeine来提高业务接口性能。
深入剖析来自未来的缓存-Caffeine
1.前言读这篇文章之前希望你能好好的阅读: 你应该知道的缓存进化史 和 如何优雅的使用缓存? 。这两篇文章主
- «
- 1
- »