缓存击穿就是一个缓存key过期了,但是这个时候有大量请求请求这个key的数据,然后直接越过redis直接访问数据库,这样的话,数据库扛不住这么大的访问量直接崩了
解决方案:
- 设置热点数据永不过期,热点数据就是被经常性的大量访问的数据永不过期,需要清除的话手动清除
- 互斥锁:当发生了这样情况,只允许第一个请求的数据区请求数据,其他的请求都被锁住
- 双缓存机制,一级缓存是正常的过期时间,二级缓存设置个较长的时间,当一级缓存过期了,二级缓存顶上去,然后再更新一级缓存的过期时间,刷新二级缓存的过期时间
- 预加载:就是在热点数据快要过期的时候,进行重新加载
- 设置不同的过期时间,防止不同的热点数据同时过期,那么这样服务器肯定顶不住,数据库直接崩了,以上就是解决方案!