redis 常见的面试题

时间:2022-07-26
本文章向大家介绍redis 常见的面试题,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

Redis雪崩

概念

在某个时间点,所有的key失效,此时突然有6000条数据请求,去请求缓存,由于key失效,此时这6000的请求同时去直接访问数据库,数据库同一时间内无法坑住大量的请求压力,导致数据库崩了

解决方法

设置key的失效时间为随机的,不会出现所有的key都同时失效

Redis缓存穿透

概念

是指数据库和缓存中都不存在这个数据,而此时用户不断的在请求改服务,此时可能会导致数据库崩塌(用户请求查询条件不合理,例如数据库id是从0开始,用户一直请求查询数据库中id=-1)

解决方法

在接口调用的是时候对接口进行鉴权校验,过滤掉不合理的参数,直接返回null,过滤不合理的请求

if(key){
    //获取缓存数据
    get(key);
}else {
    //从数据库拿数据 
    getDB(); null
    //避免出现重复调用的情况  查询到的为空 想缓存中存入null
    set(key,null);
}

Redis缓存击穿

概念

缓存击穿,是指一定时间内多个服务使用同一个key进行数据请求,也称为并发,由于同时间内抗不住如此大的访问量致使缓存服务器蹦线,数据请求直接请求数据库,导致数据库崩了

解决方法

加锁 限制同一段时间内请假的数据 比如放行1000次请求 剩下的都是进入等待状态

分布式锁

redis    setnx  setex
        set(key,value,nx,xp,timeout)