Redis
一、优势
1. 业务角度
-
加快请求效率
- 提升了使用体验
2. 技术角度
- 减轻服务器、数据库压力
- 提升系统性能
二、劣势
1. 硬件成本增加
2. 维护成本增加
-
缓存失效
-
缓存穿透
-
缓存穿透是指缓存和数据库都没有的数据,而用户不断发起请求
- 接口层增加校验,如用户鉴权,id做基础校验,id<0的直接拦截
- 从缓存取不到的数据,在数据库中也没有取到,这时也可以将key-value 写为 key-null,缓存有效时间可以设置短点
- 布隆过滤器
-
-
缓存击穿
-
缓存击穿是指缓存中没有但数据库中有的数据(一般是缓存时间到期),这时由于并发用户特别多,同时读缓存没读到数据,有同事去数据库去取数据,引起数据库压力瞬间增大,造成过大压力
- 设置热点数据永吧过期;
-
- 加互斥锁
- 延伸:互斥锁参考方案
-
-
缓存雪崩
- 当某一个时刻出现大规模的缓存失效的情况,那么就会导致大量的请求直接打在数据库上面,导致数据库压力巨大,如果在高并发的情况下,可能瞬间就会导致数据库宕机。这时候如果运维马上又重启数据库,马上又会有新的流量把数据库打死。这就是缓存雪崩。
-
-
缓存与数据库同步
-
常规写法
- 先删数据库再更新缓存
- 先删缓存再更新数据库
-
延时双删
- 加互斥锁
-
延时双删 & 延时双删+互斥锁 对比图
image.png
网友评论