美文网首页
缓存三大问题

缓存三大问题

作者: MachaelSui | 来源:发表于2020-07-20 01:16 被阅读0次

缓存雪崩 Cache Avalanche

  • 概念
    高并发系统中,如果缓存系统故障,大量的请求直接访问到后台数据库系统,导致数据库挂掉,整个系统彻底崩溃
  • 解决方案
    造成雪崩的原因主要是缓存系统高可用性较差,所以可以通过提高缓存系统的稳定性和可用来来解决
    redis作为缓存系统,可以通过哨兵机制、集群化、持久化等来提高可用性

缓存穿透 Cache Penetration

  • 概念
    高并发系统中,如果一个请求的数据在缓存中不存在,同时在数据库中也不存在,当某一时间点出现大量的这种请求,会导致系统正常的请求无法及时处理,从而出现问题
  • 解决方案
    • 把不存在的key存储null到缓存中,但是这种做法会导致缓存中存储大量不存在的数据,一般不建议这么做
    • 另外一种解决方式,转换为查找问题,类似于在海量数据中查找key是否存在,一般选用布隆过滤器来实现

布隆过滤器有非常多的用途,包括:垃圾邮件识别、搜索蜘蛛爬虫url去重等,主要借助K个哈希函数和一个超大的bit数组来降低哈希冲突本身带来的误判,从而提高识别准确性。
布隆过滤器也存在一定的误判,假如判断存在可能不一定存在,但是假如判断不存在就一定不存在,因此刚好用在解决缓存穿透的key查找场景,事实上很多系统都是基于布隆过滤器来解决缓存穿透问题的。

缓存击穿 Hotspot Invalid

  • 概念
    缓存系统中的大量热点数据在同一时间点过期失效,这些数据的访问就会请求到数据库中,给数据库系统造成很大的压力,可能造成系统的崩溃
  • 解决方案
    • 设置热点数据过期时间尽量分散,在原有基础上增加一个随机值
    • 多线程加锁,其中一个线程发现cachemiss后进行加锁,从数据库获取到内容后放入缓存中,其他线程在获取锁失败阻塞数ms后再次访问时可直接从缓存中获取到值,这样可以降低访问数据库的线程数。需要注意的是单机和集群环境需要使用不同的锁,集群环境下需要使用分布式锁,同时由于锁的使用可能影响并发的效率
    • 另外一种做法是在业务层对使用的热点数据查看是否即将过期,如果即将过期则去数据库获取最新的数据进行更新并延长该热点key在缓存系统中的时间,从而避免后面的过期cachemiss

相关文章

  • 缓存三大问题解决方案

    title: 缓存三大问题解决方案date: 2021/05/25 10:57 缓存穿透 缓存穿透指的是查询一个一...

  • 缓存三大问题

    缓存雪崩 Cache Avalanche 概念高并发系统中,如果缓存系统故障,大量的请求直接访问到后台数据库系统,...

  • 缓存三大问题点你都了解?

    缓存的意义 1:缓存一般都在内存中操作,性能比数据库高。2:缓存资源的消耗相比数据库资源的消耗更低。基于提高应用性...

  • 缓存三大问题及解决方案

    使用缓存时,业务系统大概的调用流程如下图: 当我们查询一条数据时,先去查询缓存,如果缓存有就直接返回,如果没有就去...

  • 【转载】Java并发编程系列03 | 重排序-可见性和有序性问题

    转载自公众号 写在前面 并发编程的三大问题:原子性、可见性、有序性。缓存不能及时刷新导致了...

  • 前端 http 缓存

    前端面试常问第二大问题是http缓存相关内容。说真的,http缓存相关的细节比较多,并且 http 常用协议版本有...

  • bitmap面试问题讲解

    一、recycle 二、LRU 三、计算inSampleSize 四、缩略图 五、三级缓存 网络缓存/本地缓存/内存缓存

  • 缓存那些事(二)什么是缓存以及缓存的作用

    缓存那些事(一)概述 缓存那些事(二)什么是缓存以及缓存的作用 缓存那些事(三)如何构建缓存 缓存那些事(四)缓存...

  • 缓存那些事(三)如何构建缓存

    缓存那些事(一)概述 缓存那些事(二)什么是缓存以及缓存的作用 缓存那些事(三)如何构建缓存 缓存那些事(四)缓存...

  • 缓存那些事(一)概述

    缓存那些事(一)概述 缓存那些事(二)什么是缓存以及缓存的作用 缓存那些事(三)如何构建缓存 缓存那些事(四)缓存...

网友评论

      本文标题:缓存三大问题

      本文链接:https://www.haomeiwen.com/subject/fiidkktx.html