什么是缓存击穿什么是缓存穿透以及解决方案
缓存击穿是指一个key在缓存中不存在,但是在数据库中存在,这时候大量的请求会直接穿透到数据库,导致数据库负载过高,甚至崩溃。
缓存穿透是指一个key在缓存中不存在,但是在数据库中也不存在,这时候大量请求会直接穿透到数据库,同样导致数据库负载过高,甚至崩溃。
解决方案:
-
使用布隆过滤器,过滤掉不存在的key,防止缓存穿透。
-
设置热点数据永不过期,避免缓存击穿。
-
提前将热点数据预热到缓存中,避免缓存击穿。
-
使用分布式锁,避免缓存击穿。
-
对于缓存不存在的key,也可以将其缓存到缓存中,但是过期时间可以设置短一些,避免缓存穿透。
-
在数据库中加入缓存标记,避免缓存穿透。即当从数据库中读取数据时,先判断是否有缓存标记,如果有则直接返回缓存中的数据,如果没有再从数据库中读取数据,并加入缓存标记。这样即使数据库中没有对应的数据,也可以避免缓存穿透。
原文地址: https://www.cveoy.top/t/topic/b50w 著作权归作者所有。请勿转载和采集!