数据库
首页 > 数据库> > Redis 常见问题-缓存穿透

Redis 常见问题-缓存穿透

作者:互联网


问题描述:

* 针对 DB 中不存在的数据源,每次请求缓存和数据库都不存在

造成后果:

* 应用服务器压力变大

* Redis 命中率大幅度降低

* `数据库压力巨增甚至 down 掉`
* 该现象对于 Redis 无影响,奔溃的是数据库

造成原因:

* 频繁访问不存在数据

 

 

解决方案:

1. 空值缓存:查询数据库返回为 null 时也进行缓存,但一定设置很短的过期时间

2. 实时监控:对 Redis 命中率进行实时监控,当发现命中率极速降低时,人为排查访问对象和访问数据,和运维人员配合,可以设置黑名单限制服务

3. 设置访问白名单:使用 bitmaps 类型定义一个可以访问的名单,名单 id 作为 bitmaps 的偏移量,每次访问和 bitmap 里面的 id 进行比较,如果访问 id 不在 bitmaps 里面,进行拦截,不允许访问。

4. 布隆过滤器:它实际上是一个很长的二进制向量 (位图) 和一系列随机映射函数(哈希函数)。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率和删除困难。

标签:缓存,命中率,Redis,bitmaps,访问,常见问题,id
来源: https://www.cnblogs.com/wen0223/p/16149341.html