博客
关于我
1.Redis(缓存数据库)系列之认识redis缓存【穿透、击穿、雪崩】
阅读量:286 次
发布时间:2019-03-03

本文共 533 字,大约阅读时间需要 1 分钟。

1.缓存使用场景

当用户使用我们的网站/APP时,数据来源基本是我们的底层数据库

当用户量大时,我们的数据库读写压力也会随之增加,一般情况下,我们的方法是会缓存一下热点数据,

缓存数据的目的:(1)可以直接使用户通过网站/APP从缓存中获取数据并获取响应

                            (2)也会减轻数据库的压力

 2.考虑缓存存在的问题

问题:当缓存不可用时,用户的请求会直接落在数据库上,在高并发/遭受攻击时,数据库就会崩溃。

3.当缓存可用,也会遇到如下问题

(1)缓存穿透【指的是当用户请求时,本身就不存在的缓存,会直接请求数据库,如果遇到高并发/攻击,会造成缓存穿透】

解决办法:

  • 使用布隆过滤器判断缓存中是否存在
  • 为请求设置一个值为null的缓存,设置较短的过期时间

(2)缓存击穿【指的是当用户请求时,缓存失效,会直接从数据库中重新拿取缓冲,并存入缓存,如果在获取缓存时遇到高并发,数据库压力过大会造成缓存击穿】

解决办法:

  • 热点数据缓存永不过期
  • 采用分布式锁,缓存失效后只有一个线程更新并写入

(3)缓存雪崩【指的是大面积的缓存击穿或服务不可用】

解决办法:

  • 使用Redis哨兵或者集群等架构提升可用性
  • 采用和缓存击穿一样的方式
  • 错开缓存数据的过期时间点,防止缓存大面积失效

随手记

 

 

 

 

转载地址:http://mqgl.baihongyu.com/

你可能感兴趣的文章
迅雷新财报背后:下载一哥到艰难求生
查看>>
腾讯终于要杀入电商直播了
查看>>
花1亿扶持优质红人,如涵推动网红经济出圈之路有何深意?
查看>>
抢滩抖音、B站,快手港股IPO进程加速
查看>>
智能穿戴的结局依然充满悬念
查看>>
Linux中的虚拟内存机制和内存映射
查看>>
Android系统启动系列5 SystemServer进程下
查看>>
Android四大组件系列9 ContentProvider原理
查看>>
理解PendingIntent
查看>>
Android SurfaceFlinger4 提交Buffer
查看>>
深入理解 ClientLifecycleManager 机制
查看>>
android基础知识回顾--ContentProvider简单用法
查看>>
压缩解压
查看>>
js try{}catch(){}finally{}语句
查看>>
ES6 函数模块(四)
查看>>
JavaScript入门
查看>>
PAT (Basic Level) Practice (中文)——1005 继续(3n+1)猜想 (25分)
查看>>
PAT (Basic Level) Practice (中文)——1011 A+B 和 C (15分)
查看>>
i711700K和r55600x差距大不大 i7 11700K和r5 5600x对比哪个好
查看>>
R3 PRO 3200G和r7 3700u 哪个好
查看>>