一篇文章彻底理解:缓存击穿、缓存穿透、缓存雪崩、缓存预热
前言:缓存的英文单词:Cache
这4个词中,都出现了缓存,那么在实际的项目开发中肯定是使用了缓存技术的。
缓存(Cache): 存储在计算机中的一段数据
使用缓存的好处:提高程序的运行效率,减轻直接对数据库的访问压力
正常访问情况:
缓存击穿:是指用户发起请求,缓存中没有数据,数据库中有数据,从而引起数据库压力过大
原因:一般是缓存时间到期时间导致的
解决:热点记录的缓存数据用不过期
图解:
缓存穿透:是指缓存与数据库都没有数据,而用户不断的发起请求
原因:可能是用户发起的id请求不存在或"-1"或特别大
解决:1、把当前的请求,加入缓存,并设置时间(短时间)
2、检验用户请求的合法性
3、布隆过滤算法
图解:
缓存雪崩:是指缓存中(不同的)数据大批量过期,而查询数据量特别大,引起数据库压力过大甚至宕(dang)机的情况
原因:不同数据大批量过期
解决:1、缓存过期时间设置不同
2、热点数据永不过期
3、如果缓存数据库时分布式部署,将热点数据均匀分布在不同的缓存数据库中
缓存预热:是指系统部署上线成功后,人为的将现有数据(通过访问对应的功能)加入缓存,防止第一时间涌来大量请求,导致数据库压力过大或崩溃的现象