美文网首页
缓存三大问题点你都了解?

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

作者: DoubleFooker | 来源:发表于2020-02-18 14:28 被阅读0次

缓存的意义

1:缓存一般都在内存中操作,性能比数据库高。
2:缓存资源的消耗相比数据库资源的消耗更低。
基于提高应用性能的目的,使用缓存提升了数据处理的性能,降低数据存储的消耗,提高了数据访问的响应时间。

缓存雪崩

  • 问题点:

当大量的缓存key设置的过期时间都是同一个时间点,那么当到达这个时间点时,大量的缓存key失效,导致请求全部落地到数据库,造成数据库瞬间并发请求提高,带来雪崩问题。

  • 解决方案:

1:过期时间添加随机值,将相同过期时间点概率降低。(弊端:缓存失效时间不能准确的管理)
2:缓存不设置过期时间,通过更新操作更新缓存。(弊端:更新失败,缓存一致性问题)

缓存穿透

  • 问题点:

请求的key,在缓存及db中都不存在,数据库查询不存在,不进行缓存设置,导致每次请求都落地到数据库。如果是恶意的请求,将造成数据库压力过大。例如:业务id是数据库自增的,使用id为-1的请求参,那么每次都会查询数据库,而且数据不存在。

  • 解决方案:

1:将不存在的key也缓存,设置value为特定业务值及合适的过期时间。那么请求过来时,换查询缓存,并且在过期时间内不会落地数据库。(弊端:当数据库出现新的id,且之前缓存已经被设置为控制,那么过期时间内无法访问新增的数据)
2:布隆过滤器,将所有可能存在的id存储在一个bitmap,请求前先经过过滤器判断是否存在。(弊端:存在误判的可能)

缓存击穿

  • 问题点:

对于某个热点key,每秒并发很高,在key失效的时间点,瞬间并发请求同时查询数据库,导致数据库压力瞬时暴涨。如果这样的key很多,而且当存在跟缓存雪崩一样问题的情况,数据库无疑压力更大。

  • 解决方案:

1:热点key不设置过期时间,通过更新操作同步。(弊端:更新失败带来的一致性问题)
2:通过锁机制,只允许一个请求查库同,时可以考虑使用缓存降级,获得锁失败的进程查询降级的缓存。(弊端:互斥锁带来的性能问题,导致其他线程在等待)


相关文章

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

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

  • 缓存三大问题解决方案

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

  • 缓存三大问题

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

  • 拉勾Java高薪训练营之Spring:Bean的加载以及循环依赖

    一.三级缓存的作用 在了解Bean的初始化之前,要先了解Bean的三级缓存以及各自的作用 一级缓存(singl...

  • 前端面试每日 3+1 —— 第224天

    今天的知识点 (2019.11.26) —— 第224天 (我也要出题) [html] 关于缓存你了解多少? [c...

  • 你需要知道的缓存击穿/穿透/雪崩

    缓存击穿/穿透/雪崩 Intro 使用缓存需要了解几个缓存问题,缓存击穿、缓存穿透以及缓存雪崩,需要了解它们产生的...

  • 你需要知道的缓存击穿/穿透/雪崩

    缓存击穿/穿透/雪崩 Intro 使用缓存需要了解几个缓存问题,缓存击穿、缓存穿透以及缓存雪崩,需要了解它们产生的...

  • 阿里面试Redis常考问题,你略知多少?

    一提到Redis缓存,我们不得不了解的三个问题就是:缓存雪崩、缓存击穿和缓存穿透。这三个问题一旦发生,会导致大量的...

  • 缓存

    通过本文档,你将会了解到 为什么要使用缓存 本地缓存它不香么?为什么要使用redis缓存, 缓存一致性问题,缓存穿...

  • glide原理

    首先先了解图片三级缓存: 三级缓存可以减少不必要的流量消耗,增加加载速度1,内存缓存,优先加载,速度最快2.本地缓...

网友评论

      本文标题:缓存三大问题点你都了解?

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