# 03. Redis 缓存失效的几个场景

在我们日常的开发中,无不都是使用数据库来进行数据的存储,由于一般的系统任务中通常不会存在高并发的情况,所以这样看起来并没有什么问题,可是一旦涉及大数据量的需求,比如一些商品抢购的情景,或者是主页访问量瞬间较大的时候,单一使用数据库来保存数据的系统会因为面向磁盘,磁盘读/写速度比较慢的问题而存在严重的性能弊端,一瞬间成千上万的请求到来,需要系统在极短的时间内完成成千上万次的读/写操作,这个时候往往不是数据库能够承受的,极其容易造成数据库系统瘫痪,最终导致服务宕机的严重生产问题。

为了克服上述的问题,项目通常会引入NoSQL技术,这是一种基于内存的数据库,并且提供一定的持久化功能。

redis技术就是NoSQL技术中的一种,但是引入redis又有可能出现缓存穿透,缓存击穿,缓存雪崩等问题。

  1. 缓存穿透

key对应的数据在数据源并不存在,每次针对此key的请求从缓存获取不到,请求都会到数据源,从而可能压垮数据源。比如查询一个不存在的数据,不论缓存还是数据库都没有,若高并发压测可能压垮数据库。

  1. 缓存击穿

key对应的数据存在,但在redis中过期,此时若有大量并发请求过来,这些请求发现缓存过期一般都会从后端DB加载数据并回设到缓存,这个时候大并发的请求可能会瞬间把后端DB压垮。

  1. 缓存雪崩

当缓存服务器重启或者大量缓存集中在某一个时间段失效,这样缓存失效的时候,也会给后端系统(比如DB)带来很大压力。

上边提到3个场景如何解决呢?

引用

  1. redis缓存更新策略,缓存穿透,缓存雪崩,缓存击穿。封装redis工具类 (opens new window)
Last Updated: 3/21/2024, 11:32:34 PM
Apache License 2.0 | Copyright © 2022 by xueliang.wu 苏ICP备15016087号