缓存穿透、缓存雪崩常见解决方案
解决方法:
缓存穿透:一般获取缓存中的数据,都是通过唯一key或者id去缓存中查询,如果不存在对应的值,就应该去数据库中查找。如果一些恶意的请求故意查询不存在的key或id,而且请求量很大,就会对数据库造成很大的压力。
解决方案:
1.接口层增加校验,对确定没有的key或id进行拦截;
2.从缓存取不到的数据,在数据库中也没有取到,这时也可以将key-value对写为key-null,缓存有效时间可以设置短点,如10秒。
缓存雪崩:指缓存中数据在某一时刻大量的数据过期,而这一刻高并发请求缓存中的数据,大量请求都会到数据库中查找数据,就会引起数据库压力过大甚至down机。
解决方案:设置缓存中数据的过期时间不要太集中,可以设置成随机数,防止同一时间大量数据过期现象发生。