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

(高频面试1)Redis缓存穿透、缓存击穿、缓存雪崩

目录

一:缓存数据

1.1 应用场景

1.2:缓存数据出现的问题

1.2.1 缓存穿透

1.2.2 解决办法

1.2.3 缓存击穿

1.2.4 解决办法

1.2.5 缓存雪崩

1.2.6 解决办法


一:缓存数据

1.1 应用场景

数据库查询结果缓存是一种常见的缓存应用场景,它通过将数据库查询的结果存储在缓存中,以便在未来的查询中快速获取这些结果,从而提高应用程序的性能。

1.将不经常更改的数据缓存起来

比如我们的菜品数据、套餐数据、菜品分类数据,这些数据是我们不会经常改变的的,我们可以通过Redis,缓存起来,减少请求到数据库的IO次数,提高性能

2.将查询结果缓存起来

经常被查询的数据可能是消费者比较喜欢的数据,我们可以将查询结果缓存起来,以便下次相同的搜索请求可以直接从缓存中获取数据,而无需再次查询数据库。

3.Redis缓存会话信息(单点登录)

为了缓解我们的服务器压力我们的不同业务可能是放在不同的服务器,为了让我们不同的服务器去认识同一个我,以确保会话在不同服务器之间共享,将登录成功创建的session存入redis中,其他关联项目模块都从该项目中获取登录的session,也就是拿redis中的登录数据。

我们缓存会话信息可以设置缓存时间,当我们的用户长期没有操作时,删除会话信息,让用户重新登录

1.2:缓存数据出现的问题

1.2.1 缓存穿透

一直去数据库请求不存在的数据,缓存中也存不上数据(Id不存在,或者伪造Id)

1.2.2 解决办法

(1)我们通过参数校验,拦截掉不合法的请求

(2)我们可以自定义一个map(数据量较少的时候),先判断map中存在不存在,存在就看缓存,不存在就直接拒绝该请求

(3)布隆过滤器

布隆过滤器底层采用bit数组来存储数据,默认是0,初始化,存在key进行一些列的hash,每个key都会计算出多个位置,把这些位置设置成1,之后如果我们的请求过来请求,用相同的hash去计算位置,如果匹配的多个位是1,说明元素存在,可以访问,不存在拒绝请求

(4)缓存空数据

1.2.3 缓存击穿

我们的缓存热点数据到期,缓存数据失效,同一时间访问的数据量过大,同时访问数据库导致宕机

1.2.4 解决办法

我们对每个请求加锁,防止相同产品的多个请求同时访问数据库

我们可以在过期之前,刷新我们的过期时间

不设置过期时间(预热,手动删除)

1.2.5 缓存雪崩

缓存雪崩:

1.2.6 解决办法

多个热门key同时失效

  1. 我们可以在过期时间戳加上一个随机数,防止我们的相同的key同时失效
  2. 我们可以通过哨兵模式,避免单结点故障,导致整个服务不可用,master宕机了,slave服务器自动升级为master服务
  3. 服务降级:我们配置默认数据,当我们的规定时间内,获取数据失败次数达到我们设置的值,就全局开关打开,去配置中心获取默认数据,如果一分钟内可以获取到两次数据,则把全局开关关闭(限流)
http://www.lryc.cn/news/161459.html

相关文章:

  • c++推箱子小游戏
  • SpringMVC:从入门到精通
  • jmeter 数据库连接配置 JDBC Connection Configuration
  • TVC广告片制作成本多少
  • 【Express.js】代码规范
  • Vue2+Vue3基础入门到实战项目(前接六 副线一)—— 面经 项目
  • QT tcpserver
  • Android adb shell svc 知识详解
  • Debian12系统下LAMP环境中Nubuilder4.5的安装
  • 百度超级链BaaS服务平台调研
  • 计算机网络之TCP/IP协议第二篇:OSI参考模型详解
  • Linux内核分析与应用2-内存寻址
  • 苍穹外卖 day12 Echats 营业台数据可视化整合
  • 代码随想录算法训练营day45|70. 爬楼梯(进阶版)|322. 零钱兑换|279.完全平方数
  • 数据结构和算法(3):列表
  • 使用playright自动下载vscode已安装插件
  • 单片机语言实例:2、点亮数码管的多种方法
  • C#学习 - 初识类与名称空间
  • Python爬取电影信息:Ajax介绍、爬取案例实战 + MongoDB存储
  • JavaScript的面向对象
  • MybatisPlus 核心功能 条件构造器 自定义SQL Service接口 静态工具
  • TSN时间敏感网络
  • 【2023年数学建模国赛】C题解题思路
  • 5分钟 将“.py”文件转为“.pyd”文件
  • python 入门到精通(一)
  • AJAX (Asynchronous JavaScript And XML)异步的JavaScript 和 XML
  • 华为云云耀云服务器L实例评测|安装Java8环境 配置环境变量 spring项目部署 【!】存在问题未解决
  • 安卓多渠道打包(五)360加固walle多渠道打包
  • Jmeter 实现 mqtt 协议压力测试
  • 蓝桥杯官网练习题(凑算式)