缓存 穿透

147 阅读1分钟

缓存穿透

查询一个一定不存在的数据。 查不到则不写入缓存。那么就会导致每次都需要去数据库查询一个不存在的数据了,就是查询的缓存都不在了 都去访问数据库了。 如果有人恶意并发的话 那么瞬间就GG了

if(redis中是否存在key){
 拿redis
} else {
 查询数据库 查到了就放到redis去 但是问题就是查不到就永远 都是查数据库
}

解决方法

if(redis中是否存在key){
 if(get(key)!=''){
   返回redis数据
 }
} else {
 查询数据库 查到了就放到redis去 查不到也写到redis去 key=''
}

缓存雪崩