亿级流量网站架构核心技术 第九章 应用级缓存
缓存命中率
缓存回收策略
1 基于空间
指缓存设置了存储空间
2 基于容量
指缓存设置了数量的大小
3 基于时间
TTL:存活期,即缓存数据从创建开始到过期的时间段
TTI:空闲期,多久没被访问后移除
4 基于Java对象引用
软引用:
弱引用:
5 回收算法
FIFO:先进先出。
LRU:最近最少使用。移除使用时间最久的
LFU:最不常用。移除一段时间内使用次数最少的
Java缓存类型
1 堆缓存
没有序列化/反序列化,是最快的缓存。当数据量很大时,GC暂停时间长,容量受限于堆空间大小。一般通过软引用/弱引用。
可以使用Guava Cache,Ehcache 3.X,MapDB
2 堆外缓存
减少GC暂停时间,支持更大的缓存空间。需要序列化/反序列化
可以使用Ehcache 3.X,MapDB
3 磁盘缓存
缓存数据在磁盘上,重启后仍存在
可以使用Ehcache 3.X,MapDB
4 分布式缓存
缓存使用模式实践
1 cache-aside
业务代码围绕着cache写,由业务代码直接维护缓存
2 cache-as-sor
把cache看作数据源,所有操作都是对cache进行,再由cache委托给sor进行真实的读/写,有三种实现read-through,write-through,write-behind

浙公网安备 33010602011771号