缓存数据库的第一防线,防止数据访问频繁而崩溃,十分重要

缓存穿透 缓存击穿 缓存雪崩 -本质都是前台透过缓存直接访问数据库而导致的一系列效应

缓存穿透(重点在于透字,透过缓存直接访问数据库)

数据库查询结果为空,则不加缓存,导致缓存穿透。

  -若恶意程序故意访问为空的数据,或高并发下访问为空的数据,由于不设缓存,导致直接访问数据库,造成数据库压力过大,从而崩溃

  -解决方法:对数据库的空值结果也加缓存,但设置过期时间,时间可以设置短点,有效阻止短时间的大量访问,并数据同步效果较好

缓存雪崩

大量缓存数据同一时间过期,导致数据库压力过大,而崩溃

  -缓存过期时间相近,而此时访问量过多,导致缓存雪崩

  -解决方法:每个不同类型的key尽量设置不同时间

缓存击穿 (重点在于穿字,击穿缓存,出现场景极小)

高频大量访问热点缓存数据,若缓存一瞬间失效,直接击穿缓存屏障,访问数据库,导致缓存击穿

  -所有缓存思路基本都设置了过期时间,时间一到再去数据库查询数据,但若是在这一瞬间,高频大量的线程进来,将导致数据库崩溃

  -解决方法:1-同步机制,损失并发性,提高性能,比较好的是双检锁;2-热点数据之间存储在缓存中,而不入库(或异步入库),之间缓存交互

转载于:https://www.cnblogs.com/ruerror/p/11209697.html

缓存-问题:缓存穿透 缓存雪崩 缓存击穿相关推荐

  1. Redis入门到实战(实战篇)缓存更新、穿透、雪崩、击穿!

    Redis基础篇 Java面试宝典-redis 实战篇Redis 开篇导读 亲爱的小伙伴们大家好,马上咱们就开始实战篇的内容了,相信通过本章的学习,小伙伴们就能理解各种redis的使用啦,接下来咱们来 ...

  2. Redis中的缓存穿透、雪崩、击穿的原因以及解决方案(详解)

    一.概述 ① 缓存穿透:大量请求根本不存在的key(下文详解) ② 缓存雪崩:redis中大量key集体过期(下文详解) ③ 缓存击穿:redis中一个热点key过期(大量用户访问该热点key,但是热 ...

  3. 什么是缓存穿透、雪崩、击穿以及解决方案

    目录 1.缓存穿透 2.缓存雪崩 3.缓存击穿 4.区别总结 5.加锁实现 1.缓存穿透 描述: 在查询一个数据时,在缓存中不存在,将去数据库进行查询并且数据库中也不存在数据,使得缓存中一直不会存在数 ...

  4. 尚硅谷Redis尚硅谷学习汇总_事务_持久化_主从复制_集群_穿透_雪崩_击穿

    前言 该文章是我在学习Redis过程中写的学习汇总,包括了基本使用和常用命令.RDB和AOF.配置文件.事务.击穿.穿透.雪崩.集群等,都记录了详细过程,不管是新手学习还是有基础的同学拿来回顾都是可以 ...

  5. mysql数据库击穿_面试中经常出现的缓存穿透、雪崩和击穿到底是什么?

    对于缓存穿透.缓存雪崩和缓存击穿常常出现在面试中,今天来看看它到底是何方神圣 ​ ​ redis缓存穿透 ​理解重在穿透吧,也就是访问透过redis直接经过mysql,通常是一个不存在的key,在数据 ...

  6. 缓存穿透、雪崩、击穿的区分

    缓存穿透: 是指用户查询一个不存在的数据,由于缓存无法命中,将去查询数据库,但是数据库也无此记录,并且出于容错考虑,我们没有将这次查询的null写入缓存,这将导致这个不存在的数据每次请求都要到存储层去 ...

  7. 一篇吃透Redis缓存穿透、雪崩、击穿问题

    前言:在学Redis之前我们查询数据的时候都是直接查询数据库的,但是这样会有一个潜在的问题:"如果用户量很大,所有请求都去访问数据库,那么会使数据库压力过大,导致性能下降甚至宕机" ...

  8. redis 穿透、雪崩、击穿

    redis穿透 什么是redis穿透? 查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存 这将导致这个不存在的数据每次请求都要到存储层去查询, ...

  9. Redis常见面试题(缓存击穿、穿透、雪崩)

    Redis常见面试题(缓存击穿.穿透.雪崩) 击穿 场景: 一般由于redis中的数据到期,同时并发用户特别多,此时大量请求压到数据库上. 解决思路: 根据redis是单进程单实例的特性,当高流量进入 ...

  10. Redis11_缓存穿透和雪崩

    Redis11_缓存穿透和雪崩 缓存穿透 用户查询某个数据时,会先在redis缓存中查询,如果缓存没有命中,会去持久层数据库MySQL中查询,如果此时依然没有命中,将返回null,不会写入缓存. 当同 ...

最新文章

  1. springcloud 之 bus 消息总线
  2. python函数调用追踪_Python函数调用追踪实现代码
  3. android studio 引入arr的问题
  4. HDU 3966 Aragorn's Story (树链点权剖分,成段修改单点查询)
  5. DevExpress.XtraGrid 导出文本的bug
  6. c++ -- 重载、重写(覆盖)和隐藏的区别
  7. 安防监控专用工业交换机与普通交换机的区别
  8. 校园6美女向一男生表白 史上最强表白阵容来袭
  9. phpstudy不能启动mysql_phpStudy启动后为什么MYSQL无法启动
  10. MT4/MT5 EA 回测价格模式OHLC之坑
  11. 数组和链表分别比较适合用于什么场景
  12. 基于闪电搜索算法的函数寻优算法
  13. c# IE浏览器清除缓存没用
  14. 2018年10月OKR初步规划
  15. 创建一键部署的前后端(SpringBoot+Vue+nginx)项目镜像
  16. 了解 Gradle 和 buildType Task
  17. 怎么样去提升网站长尾词在百度搜狗360的排名?
  18. Ubuntu 安装Jdk1.8
  19. Win11下载和安装T3标准版11.2
  20. w3school-领先的 Web 技术教程

热门文章

  1. NYOJ --277 车牌号
  2. [清华集训2016]温暖会指引我们前行——LCT+最大生成树
  3. 【个人】微信小程序初体验
  4. 给我一个软件,我将操控一个机器人军团!
  5. 7 天 600 stars, Mobi.css 是如何诞生的
  6. 基于QT4.8.3的手机操作系统,已完成QML语言的加入
  7. Entity Framework 实践系列 —— 搞好关系 - 两情相悦(双向一对一)
  8. samba 和 nfs 实验
  9. Linux编译错误:对‘sem_init/sem_wait/sem_destroy’等未定义的引用
  10. spring处理循环依赖时序图_spring--解决循环依赖