当前位置: 首页 > news >正文

Redis -- 缓存穿透问题解决思路

缓存穿透 :缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在,这样缓存永远不会生效,这些请求都会打到数据库。

常见的解决方案有两种:

  • 缓存空对象

    • 优点:实现简单,维护方便

    • 缺点:

      • 额外的内存消耗

      • 可能造成短期的不一致

  • 布隆过滤

    • 优点:内存占用较少,没有多余key

    • 缺点:

      • 实现复杂

      • 存在误判可能

缓存空对象思路分析:当我们客户端访问不存在的数据时,先请求redis,但是此时redis中没有数据,此时会访问到数据库,但是数据库中也没有数据,这个数据穿透了缓存,直击数据库,我们都知道数据库能够承载的并发不如redis这么高,如果大量的请求同时过来访问这种不存在的数据,这些请求就都会访问到数据库,简单的解决方案就是哪怕这个数据在数据库中也不存在,我们也把这个数据存入到redis中去,这样,下次用户过来访问这个不存在的数据,那么在redis中也能找到这个数据就不会进入到缓存了

布隆过滤:布隆过滤器其实采用的是哈希思想来解决这个问题,通过一个庞大的二进制数组,走哈希思想去判断当前这个要查询的这个数据是否存在,如果布隆过滤器判断存在,则放行,这个请求会去访问redis,哪怕此时redis中的数据过期了,但是数据库中一定存在这个数据,在数据库中查询出来这个数据后,再将其放入到redis中,

假设布隆过滤器判断这个数据不存在,则直接返回

这种方式优点在于节约内存空间,存在误判,误判原因在于:布隆过滤器走的是哈希思想,只要哈希思想,就可能存在哈希冲突

小总结:

缓存穿透产生的原因是什么?

  • 用户请求的数据在缓存中和数据库中都不存在,不断发起这样的请求,给数据库带来巨大压力

缓存穿透的解决方案有哪些?

  • 缓存null值

  • 布隆过滤

  • 增强id的复杂度,避免被猜测id规律

  • 做好数据的基础格式校验

  • 加强用户权限校验

  • 做好热点参数的限流

http://www.lryc.cn/news/332886.html

相关文章:

  • 数据挖掘中的PCA和KMeans:Airbnb房源案例研究
  • 【ArcGIS微课1000例】0107:ArcGIS加载在线历史影像服务WMTS
  • IP归属地在互联网行业中的应用
  • 非关系型数据库-----------探索 Redis高可用 、持久化、性能管理
  • 每日一题:三数之和
  • 【SCI绘图】【曲线图系列2 python】多类别标签对比的曲线图
  • 达梦DMHS-Manager工具安装部署
  • Marketo营销自动化集成Zoho CRM
  • 【Leetcode每日一题】模拟 - 外观数列(难度⭐⭐)(51)
  • CMakeLists.txt编写简单介绍:CMakeLists.txt同时编译.cpp和.cu
  • MSSQL有关数据库、表的循环操作可使用的存储过程 sp_MSforeachdb 及 sp_MSforeachtable
  • day63 单调栈part02
  • 上市公司股权性质演变:2000-2022年集中度数据深度剖析(5W+数据)
  • 安装Redis Windows版
  • 用 ipset 和 iptables 保护 sip 端口
  • 日志打印的学习之log4j2(二)进阶案例
  • c语言实现2048小游戏
  • 159 Linux C++ 通讯架构实战14,epoll 函数代码实战
  • 【鹅厂摸鱼日记(一)】(工作篇)认识八大技术架构
  • CA根证书——https安全保障的基石
  • Spark-Scala语言实战(10)
  • 【C++庖丁解牛】高阶数据结构---红黑树详解(万字超详细全面介绍红黑树)
  • 汽车网络安全管理
  • 文本自动粘贴编辑器:支持自动粘贴并筛选手机号码,让信息处理更轻松
  • Linux云计算之网络基础9——园区网络架构项目
  • Java 中的 List 集合
  • 数据库之DDL操作(数据库,表,字段)
  • 5.3.1 配置交换机 SSH 管理和端口安全
  • Django--数据库连接
  • CKA 基础操作教程(二)