Redis穿透
出现原因:频繁的查询一个不存在的数据,由于缓存不命中,每次都要查询持久层,从而失去缓存保护后端的意义
解决方法:
部署过滤器拦截:
将数据库中数据的存在的Id存入列表,放入缓存中,每次先判断要查询的数据(通过sismember key member)是否存在,如果存在,就去持久层进行查询,否则,不会进入持久层
Redis雪崩
出现原因:缓存层在短时间内大量的数据失效,大量数据请求到达持久层,持久层的调用量暴增,造成持久层负担不了的情况
解决方法:
缓存失效时间均匀分布:
将数据的失效时间随机到一段时间区间内,避开大量数据同时失效的情况,减少持久层的频繁调用