📚 分类
redis
🕵🏽‍♀️ 问题描述
什么是缓存穿透?
👨‍🏫 问题讲解
项目中为了减轻数据库的压力,会将部分高频查询的数据放入到缓存之中。
当有请求过来的时候,会直接从缓存中获取数据,从而减轻数据库压力。
但是如果查询数据库中不存在的记录,缓存中也是没有数据信息的,这样每次都会查询数据库。
比如:根据文章id查询文章详情,在redis中查询到文章信息则直接返回,redis中查询不到则去数据库中查询,然后返回查询结果。
🏳️‍🌈 问题总结
✅方案一: 缓存空数据,查询返回的数据为空,仍把这个空结果进行缓存{key:1,value:null}
优点: 简单
缺点: 消耗内存,可能会发生不一致的问题

✅方案二: 布隆过滤器
优点: 内存占用较少,没有多余key。
缺点: 实现复杂,存在误判。

✅布隆过滤器: 用于检索一个元素是否在一个集合中
bitmap(位图): 相当于是一个以(bit)位为单位的数组,数组中每个单元只能存储二进制数0或1。
存储数据: id为1的数据,通过多个hash函数获取hash值,根据hash计算数组对应位置改为 1。
查询数据: 使用相同hash函数获取hash值,判断对应位置是否都为 1。
📖 问题信息
📈 浏览次数:118 | 📅 更新时间:2025-12-04 03:44:56
📦 创建信息
🏷️ ID:2 | 📅 创建时间:2024-10-06 20:26:58