缓存
文章目录
特征
命中率、最大空间、清空策略
过期数据删除策略
- 惰性删除:只会在取出 key 的时候才对数据进行过期检查。对 CPU 友好,但是可能会造成太多过期 key 没有被删除
- 定期删除:每隔一段时间抽取一批 key 执行删除过期 key 操作。通过限制删除操作执行的时长和频率来减少删除操作对 CPU 时间的影响。
清空策略
- FIFO(first in first out):先进先出。算法比较创建时间。数据实效性场景
- LFU(less frequently used):使用次数。算法比较命中次数。高频数据场景
- LRU(least recently used):最近最少使用。算法比较最近被get时间。热点数据场景
本地缓存
在应用中的缓存组件,不适用于共享缓存。Guava Cache
分布式缓存
与应用分离的缓存。redis
读写策略
Cache Aside(旁路缓存)
以DB数据为准,按需加载到cache
- 读:有cache ? 返回 : 读DB后更新cache
- 写:更新DB后删除cache
Read/Write Through(读写穿透)
把cache视为主要数据存储,缓存和DB通信
Write Back(写回)
异步更新DB
问题
缓存穿透
读服务大量请求一些不可能存在在缓存里的数据
参数校验,布隆过滤器
缓存雪崩
在某个时间,有大量缓存键过期
错开过期时间
缓存击穿
由于一个或少量几个热键过期导致
热键特殊处理,热键不过期