目录
前言
算法原理
Caffeine算法的背景和优势
什么是Caffeine算法
Caffeine算法的工作原理
常见的缓存数据淘汰算法
FIFO
LRU
LFU
W-TinyLFU
Caffeine W-TinyLFU 实现
元素驱逐
元素访问
Caffeine 的四种缓存添加策略
1. 手动加载
2. 自动加载
3. 手动异步加载
4. 自动异步加载
Caffeine算法的应用场景
前言
缓存,在我们的日常开发中用的非常多,是我们应对各种性能问题支持高并发的一大利器。我们熟知的缓存有堆缓存(Ehcache3.x、Guava Cache等)、堆外缓存(Ehcache3.x、MapDB等)、分布式缓存(Redis、 memcached等)等等。今天要上场的主角是Caffeine,它其实是Google基于Java8对GuavaCache的重写升级版本,支持丰富的缓存过期策略,尤其是TinyLfu 淘汰算法,提供了一个近乎最佳的命中率。从性能上(读、写、读/写)也足以秒杀其他一堆进程内缓存框架。Spring5更是直接放弃了使用了多年的Guava,而采用了Caffeine。
Google Caffeine算法是一种缓存淘汰算法,主要用于Caffeine缓存库。Caffeine是由Google基于Java 8开发的,旨在提供高性能的本地缓存解决方案。它采用了W-TinyLFU(Weighted Tiny LFU)算法,结合了LFU(Least Frequently Used)