二十五、Redis进阶-企业级解决方案-缓存穿透
缓存穿透:是指查询一个数据库不存在的数据。举个栗子,用户想要查询一个数据,发现redis内存数据库没有,也就是缓存没命中,于是向持久层数据库查询,发现也没有,于是本次查询失败。当用户很多的时候,缓存都没有命中,于是都去请求持久层数据库,这样会给持久层数据库造成很大的压力,相当于出现了缓存穿透。
解决方案
1)缓存null
对查询结果为null的数据进行缓存(长期使用、定期清理),设置短期限,如30-60分钟,最高5分钟。(此方法容易出现内存泄露)
2)白名单策略
2.1)提前预热各种分类数据id对应的bitmaps,id作为bitmaps的offset,相当于设置了数据白名单。理解为中间件拦截器
2.2)使用布隆过滤器
3)实施监控
3.1)非活动时段的波动:通常检测3-5倍,超过5倍纳入重点排查对象
3.2)活动时段波动:通常检测10-50倍,超过50倍纳入重点排查对象
4)key加密
出现问题后,临时启动防灾业务key,对key进行业务层传输加密服务,设定校验程序校验。如每天随机分配60个加密串,挑选2-3个,混淆到页面数据中,发现访问key不满足规则,驳回数据访问。
2020-09-06
Redis-完结
请登录后再评论