首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

论缓存的穿透、雪崩、击穿、预热、降级

首先理解什么是缓存、为什么要使用缓存、缓存能带来什么样的好处、并且缓存会存在哪些问题等。

什么是缓存

缓存简单来说就是数据交换中的缓冲区。当程序或者硬件读取某种数据时、优先通过硬件以及内存方式进行获取、提高获取的效率以及速度、目的是让程序或者硬件相关的东西加速运行。

一般缓存分为5种方案

操作系统磁盘缓存 -->减少机器的交互

数据库缓存-->减少IO操作

应用程序缓存-->减少不必要的数据库操作、减少对数据库的相关链接等

web服务器缓存-->减少应用服务器的相关请求

浏览器缓存-->减少对网站访问

为什么要使用缓存

使用缓存所带:来的好处有以下几种

1:减少调用次数

2:减少不必要的性能开销

3:加速用户访问

4:提高程序的性能

当我们知道缓存所带来的好处后、那么使用中会出现什么问题呢。应该怎么设计呢。首先、我们先从使用缓存所带来的问题来说明以下几种情况

什么适合使用缓存

使用缓存的几大要素

1:常读少写

2:热数据应用(常用的信息、进行Query)

3:统计&排行榜

缓存穿透

缓存穿透代表你在设计缓存的使用、用户通过绕过缓存方式访问、让系统请求全部落地在对应的DB上、

比如你缓存有userId =1,value=张三,但是用户发送的请求是userId=2、这时、所有的请求都会先请求你缓存中是否存在、若不存在则会访问数据库、若发送1000个,1W个会同时访问缓存、数据库等、此时的开销会比你不加缓存的时候性能更受影响。

避免此方式的解决办法是以下几种、

1:将访问不存在的资源+上锁执行写个对应存在用户的空值进去、后续请求会直接返回对应Null值

2:将访问不存在的资源+锁通过缓存预热方式写入缓存、下面会介绍什么是缓存预热

缓存雪崩

我们设置缓存时过期时间统一、此时缓存统一时刻失效、所有的访问全查询到DB。避免此方式的解决办法是以下几种

1:保证缓存一直有效、定时更新缓存。

2:将时间岔开、分别更新对应缓存

缓存击穿

我们设置了缓存的有效时间、当缓存失效时高并发的访问、让请求全部落在DB上。避免此方式的解决办法是以下几种

1:提前刷新缓存、比如设置超时30分钟失效。在29分钟时刷新缓存

2:加锁机制、过期后访问若不存在则加锁、查询DB在写入缓存、

缓存预热

此是写缓存方案、项目启动或者启动缓存服务器写入缓存、定时更新等

缓存降级

当缓存服务出现问题时、通过某种方式关闭缓存访问、

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190107G17SJL00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券