缓存击穿

  • 1、概念:

    • 指的是大量访问某个key值时,key值本来存在于redis中(或者redis中没有但数据库中有该数据),但因为设置了key的有效期而使得redis中被访问的key失效,大量访问在redis中的不到反馈,则大量访问转移至数据库,导致数据库崩溃。
    • 例子:
      • 秒杀商品时,原本某商品预计秒杀时间为1小时,redis的key有效期也为1小时,但因某些原因,延长了秒杀过程而key值失效,使得缓存击穿,数据库崩溃。
  • 2、解决方法:
    • a、设置热点数据key永远不过期(定时更新热点数据)。
    • b、加互斥锁:
      • 在同一时间只能有一个线程访问数据库,并且访问完数据库,将数据缓存至redis
      • 缺点:效率低

缓存穿透

  • 1、概念:

    • 指有大量访问redis中不存在的key值(或者redis中没有且数据库中也没有该数据),使得redis命中率为0,只能将大量访问转移至数据库,导致数据库崩溃。
    • 一般属于黑客攻击,比如访问某个id为负值的数据。
  • 2、解决方法:
    • a、即使数据库中没有该数据,也缓存搜索的key到redis,值为null,key值有效期相对设置较短
    • b、多为黑客攻击,封禁或者限制ip登录
    • c、接口层增加校验,如用户鉴权校验,id做基础校验,id <= 0的直接拦截

缓存雪崩

  • 1、概念

    • 指redis中的大量key值相同时间失效,导致大量的访问转移至数据库,导致数据库崩溃。
  • 2、解决方法:
    • a、随机赋予key失效时间
    • b、热点数据永不过期(根据实际更新热点数据)

缓存击穿、缓存穿透、缓存雪崩简单总结相关推荐

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

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

  2. 使用jedis连接redis-cluster模拟缓存击穿,穿透,雪崩场景

    上一篇演示了通过redis实现ID生成器,本篇模拟缓存击穿,穿透,雪崩的场景. package com.coderman.jedis.clusterdemo.hack;import com.coder ...

  3. 《如何与面试官处朋友》系列-缓存击穿、穿透、雪崩场景原理大调解

    前面我们提到分布式多级缓存架构的全貌,但总感觉少了些什么东西.在这样大的场景下面,如果遇到缓存使用问题那可咋办?但自古英雄出少年,相信此刻你已踏马西去,正走在寻找答案上得夕阳西下.每每面谈Redis大 ...

  4. php怎么解决雪崩或穿透,Redis之缓存击穿、穿透、雪崩、预热,以及如何解决?...

    数据获取的流程,一般是前端请求,后台先从缓存中取数据,缓存取不到则去数据库中取,数据库取到了则返回给前端,然后更新缓存,如果数据库取不到则返回空数据给前端 流程图: 假如缓存的数据没有,后台则会一直请 ...

  5. Redis——缓存击穿、穿透、雪崩

    1.缓存穿透: (1)问题描述:key对应的数据并不存在,每次请求访问key时,缓存中查找不到,请求都会直接访问到数据库中去,请求量超出数据库时,便会导致数据库崩溃.如一个用户id不存在,数据库与缓存 ...

  6. 【Redis系列】缓存击穿、穿透、雪崩解决方案详解

    文章目录 前言 一.击穿 1.介绍 2.产生原因 3.解决方案 二.穿透 1.介绍 2.产生原因 3.解决方案 三.雪崩 1.介绍 2.产生原因 3.解决方案 结尾 前言 众所周知,计算机的瓶颈之一就 ...

  7. Redis缓存击穿,穿透,雪崩等问题

    雪崩(随机过期时间.永不过期). 穿透(表示恶意请求,在系统端判断是否符合规则,比如id<0,布隆过滤器). 击穿(查询加for update,永不过期) redis缓存穿透:查询一个数据库中不 ...

  8. 缓存击穿,穿透,雪崩

    一.缓存击穿 单个热点key,在不停的扛着大并发,在这个key失效的瞬间,持续的大并发请求就会击破缓存,直接请求到数据库 解决方案 使用互斥锁(Mutex Key),只让一个线程构建缓存,其他线程等待 ...

  9. 谈谈redis缓存击穿透和缓存击穿的区别,雪崩效应

    谈谈redis缓存击穿透和缓存击穿的区别,雪崩效应 面试经历 在很长的一段时间里,我以为缓存击穿和缓存穿透是一个东西,直到最近去腾讯面试,面试官问我缓存击穿和穿透的区别:我回答它俩是一样的,面试官马上 ...

  10. java缓存击穿_对缓存击穿的一点思考

    点击上方"Java知音",选择"置顶公众号" 技术文章第一时间送达! 作者:张丰哲 www.jianshu.com/p/93767dac6b56 技术经验交流: ...

最新文章

  1. 「每周CV论文推荐」 初学深度学习活体与伪造人脸检测必读的文章
  2. 发送经纬度坐标给指定手机
  3. mac 更换默认蓝牙适配器_蓝牙防丢器实现安卓的BLE接口编程
  4. 图像相似性搜索的原理
  5. 解决 web.xml is missing and failOnMissingWebXml is set to true 报错
  6. [学习笔记] 乱世之神杀疯了 —— K-D tree
  7. call stack and stack buffer overflow
  8. 作者:周涛,电子科技大学大数据研究中心主任、教授、博士生导师。
  9. WSS2.0 SP2升级到WSS3.0步骤
  10. HDU1023 Train Problem II【Catalan数】
  11. sql server 性能_SQL Server性能基础
  12. python2和python3同时安装在Windows上
  13. 服务器部署_nginx报错: [warn] conflicting server name www.test.com on 0.0.0.0:80, ignored
  14. [转] ubuntu开启SSH服务
  15. 用计算机弹发如雪,计算器弹音乐谱子
  16. python实现增删改查电话本程序笔记
  17. 体脂秤模块的原理和基本功能说明
  18. Activity启动过程详解(Android P)
  19. java程序的可移植性
  20. IOS开发之隐藏软键盘

热门文章

  1. 在HTML中标记tel是什么意思,'tel'属性在AEM 6.1的经典UI中富文本编辑器中的锚标记的href中不起作用...
  2. opencv看图像同导致 python_OpenCV-Python速查:从载入图片到人脸识别
  3. select设置text的值选中(兼容ios和Android)基于jquery
  4. 2017-2018-1 20179215 《从问题到程序》第三章
  5. UWP开发随笔——UWP新控件!AutoSuggestBox!
  6. java+opencv+intellij idea实现人脸识别
  7. DevExpress GridView 自定义实现底部汇总
  8. asp.net页面中Menu控件下拉菜单被frame挡住和iframe自适应高度的解决办法
  9. 服务器端文件名,挑战服务端各文件名中文含义及详细说明
  10. python实现通讯录的增删改查_python实现数据库增删改查