二十五、Redis进阶-企业级解决方案-缓存穿透

作者: 温新

分类: 【Redis】

阅读: 2544

时间: 2020-09-06 09:54:12

缓存穿透:是指查询一个数据库不存在的数据。举个栗子,用户想要查询一个数据,发现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-完结

请登录后再评论