文章目录
- 缓存概要
- 本地缓存和外部缓存
- 缓存策略
- 缓存常见的问题
- 1.缓存穿透
- 2.缓存击穿
- 3.缓存雪崩
缓存概要
本地缓存和外部缓存
缓存策略
为了使用有限容量的内存,必然会有一定的缓存淘汰方法,去淘汰掉冷性缓存,提高内存使用率
- 先进先出
- 最近最少使用
- 按固定时间过期(最常使用)
设置过期时间,可根据业务数据进行加权 类似3+5X的时间,X为业务参数,此淘汰策略适合读多写少的情况
缓存常见的问题
1.缓存穿透
大量的请求来请求同一个数据 ,但是缓存和数据库中都没有,就会造成数据库的巨大压力
解决方法:
- 添加一个null的key
- 使用布隆过滤器
- 完全以缓存为主,采用异步缓存加载
2.缓存击穿
大量的请求来请求同一个数据,缓存中没有,请求都跑到数据库层面,造成数据库压力大
解决方案:
- 加的互斥key锁,访问同一个key只有有一个请求进入数据库
- 完全以缓存为主,采用缓存异步加载机制
3.缓存雪崩
大量的请求查询不同的数据,但此时缓存失效,大量的请求来到了数据库
解决方案:
- 将过期时间在业务层面做的均匀分散
- 热数据分散到不同的服务器上