缓存穿透与缓存雪崩

news/2024/7/19 12:13:13 标签: 数据库, 后端, 爬虫

前言

在学习redis相关问题时看到的两个问题,想起自己以前面试也遇到过,记录下来以备后用

1.缓存穿透

  缓存穿透是指访问一个根本不存在的数据,多次的访问导致数据库压力变大,而缓存没起到作用;缓存穿透问题可能会使后端存储负载加大,由于很多后端存储不具备高并发性,甚至可能造成后端存储宕掉。通常可以在程序中分别统计总调用数、缓存层命中数、存储层命中数,如果发现大量存储层空命中,可能就是出现了缓存穿透问题。 
  造成缓存穿透的基本有两个。第一,业务自身代码或者数据出现问题,第二,一些恶意攻击、爬虫等造成大量空命中,

  解决方案:

    1. 对于查询不到的空数据也做缓存,缓存时间可设置短一些,但是存在一些问题,空值做了缓存,意味着缓存层中存了更多的键,需要更多的内存空间

    2. 使用布隆过滤器。在访问缓存层和存储层之前,将存在的 key 用布隆过滤器提前保存起来,做第一层拦截,有关布隆过滤器的相关知识,可以参考:http://www.cnblogs.com/duanxz/p/3480254.html,其实也可以利用 Redis 的 Bitmaps 实现布隆过滤器,GitHub 上已经开源了类似的方案,读者可以进行参考: 
https://github.com/erikdubbelboer/Redis-Lua-scaling-bloom-filter 

2.缓存雪崩

  缓存雪崩是指在同一时间缓存同时失效,有可能是因为过期时间,有可能是因为缓存服务器宕机,此时大量请求进入数据库查询,导致数据库压力剧增。

  对于缓存因为过期而同时失效的问题,就需要分析接口调用,尽可能的使缓存过期时间分布均匀。

  若是因为缓存服务器宕机,这就涉及到缓存的容灾处理,缓存的高可用,可以参考redis集群搭建,并且可以通过redis的哨兵模式解决。

  缓存雪崩简单来说就是缓存失效的问题,业界比较常用的做法,是使用mutex。简单地来说,就是在缓存失效的时候(判断拿出来的值为空),不是立即去load db,而是先使用缓存工具的某些带成功操作返回值的操作(比如Redis的SETNX或者Memcache的ADD)去set一个mutex key,当操作返回成功时,再进行load db的操作并回设缓存;否则,就重试整个get缓存的方法。

 

转载于:https://www.cnblogs.com/gtblog/p/10616326.html


http://www.niftyadmin.cn/n/833986.html

相关文章

2016年计算机一级考试题库,2016年全国计算机一级考试试题附答案

附2016年全国计算机一级考试题答案全国计算机考试时间越来越近了。gkstk小篇推荐以下计算机一级考试问题。希望对大家有帮助!选择题:1.微机硬件系统中最关键的部件是。回答:Ba,主机板b,CPU C,内部储存d&…

CentOS下如何修改主机名

一、临时生效,重启服务器后就会失效命令语法:hostname 新主机名提示:用hostname命令修改主机名后,需要退出当前用户重新登录后才可以生效。例1:[rootlocalhost /]# cat /etc/redhat-release CentOS Linux release 7.…

vue教程1-初体验

起步 var vm new Vue({// 选项 }) #每个Vue应用都需要通过实例化Vue来实现&#xff0c;语法格式继承原生js<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><script src"h…

计算机等级考试奖励方案,淮南师范学院学生奖励办法(修订)

为全面贯彻党和国家的教育方针&#xff0c;弘扬“严谨、勤奋、求是、创新”的校风&#xff0c;调动学生努力进取、奋发成才的积极性&#xff0c;建设优良的校风和学风&#xff0c;培养德、智、体、美、劳全面发展的社会主义事业的建设者和接班人&#xff0c;根据《普通高等学校…

浅谈移动端 View 的显示过程

作者&#xff1a;个推安卓开发工程师 一七 随着科技的发展&#xff0c;各种移动端早已成为人们日常生活中不可或缺的部分&#xff0c;人们使用移动端产品工作、社交、娱乐……移动端界面的流畅性已经成为影响用户体验的重要因素之一。那么你是否思考过移动端所展现的流畅画面是…

杭州 计算机考研,杭电计算机考研经验

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼专业课考研&#xff0c;我个人认为主要还是考察基本的概念&#xff0c;以教材为主&#xff0c;教材就是圣经。不可否认&#xff0c;教材是枯燥的&#xff0c;尤其像数据结构这样的课程&#xff0c;比较抽象&#xff0c;就算对于那些…

天津春季高考历年计算机考试卷,春季高考历年真题-天津市春季高考计算机试卷.doc...

文档介绍&#xff1a;天津市高等院校春季招生统一考试计算机基础本试卷分第Ⅰ卷(选择题)和第Ⅱ卷(非选择题)两部分。第Ⅰ卷1至10页,第Ⅱ卷11至12页。共150分。考试时间120分钟。第Ⅰ卷(选择题共100分)注意事项:1.答第Ⅰ卷前,考生务必将自己的姓名、准考号、考试科目涂写在答题卡…

是程序员,就用python导出pdf

这两天一直在做课件&#xff0c;我个人一直不太喜欢PPT这个东西……能不用就不用&#xff0c;我个人特别崇尚极简风。 谁让我们是程序员呢&#xff0c;所以就爱上了Jupyter写课件&#xff0c;讲道理markdown也是个非常不错的写书格式啊。 安装Jupyter其实非常简单&#xff0c;你…