Redis 缓存雪崩、击穿、穿透

本文涉及的产品
云原生内存数据库 Tair,内存型 2GB
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Redis 版,经济版 1GB 1个月
简介: 什么是缓存雪崩、击穿、穿透

1、Redis 缓存雪崩

一句话就是:大面积的缓存失效,Redis 相当于没有了,直接将查询请求打到数据库,然后数据库顶不住,崩了。

image-20200823095731088

例如:设置缓存更新时间为12:00, 但恰好有秒杀、促销活动,一下涌进很多的请求,本来 Redis 还可以抗住,但因为此时缓存失效了,所以直接打到数据库,但数据扛不住这么多的请求,然后崩了。

解决方法:缓存失效时间可以设置为凌晨三四点钟这段流量比较少的时候,另外 Redis 缓存失效时间加个随机值,避免同一时间大面积的缓存失效。

2、缓存击穿(数据存在的)、穿透(请求不存在的数据)

缓存击穿、穿透是两个比较容易混淆的概念,还是一句话概括:

  • 缓存击穿是一个非常热点的数据(该数据是存在的),然而在请求量很大的时候突然失效了,也是直接将请求打到了数据库。跟缓存雪崩不同的是,击穿是小部分缓存失效,雪崩是大部分缓存失效
  • 缓存穿透是一直请求数据不存在的数据,所以 Redis 没有该数据的缓存,也是直接将请求打到了数据库。

解决方法:

  • 缓存击穿可以设置热点数据永不过期,例如商城首页、某个热门活动,更新的时候选择流量比较少的时间,更新完立马刷新缓存。
  • 缓存穿透:

    • 1、请求的参数检验,不合法的数据直接返回错误
    • 2、布隆过滤器,布隆过滤器的特点,说不存在的数据的一定不存在,过滤不存在的数据请求
    • 3、拉黑恶意请求,配置每秒超过多少次的,一看就不是人手工操作发起的请求的 IP 直接拉黑
相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
2天前
|
存储 缓存 NoSQL
redis缓存优化
采用获取一次缓存,如果为空的情况,获取分布式锁,让一个线程去重建缓存,另外的线程未获取到锁的情况,休眠短时间,然后再自旋获取缓存。
11 0
|
1天前
|
存储 缓存 监控
详解缓存雪崩、缓存击穿、缓存穿透问题,一文掌握,干货不断
详解缓存雪崩、缓存击穿、缓存穿透问题,一文掌握,干货不断
|
3天前
|
存储 缓存 NoSQL
SpringBoot配置第三方专业缓存技术Redis
SpringBoot配置第三方专业缓存技术Redis
10 4
|
1天前
|
存储 缓存 NoSQL
|
6天前
|
存储 缓存 NoSQL
springboot redis-cache 自动刷新缓存
springboot redis-cache 自动刷新缓存
|
3天前
|
缓存 NoSQL Redis
SpringBoot2.4.5使用redis缓存
SpringBoot2.4.5使用redis缓存
9 0
|
存储 缓存 NoSQL
Spring Boot2.5 实战 MongoDB 与高并发 Redis 缓存|学习笔记
快速学习 Spring Boot2.5 实战 MongoDB 与高并发 Redis 缓存
442 0
Spring Boot2.5 实战 MongoDB 与高并发 Redis 缓存|学习笔记
|
缓存 NoSQL 安全
6.0Spring Boot 2.0实战 Redis 分布式缓存6.0|学习笔记
快速学习6.0Spring Boot 2.0实战 Redis 分布式缓存6.0。
290 0
6.0Spring Boot 2.0实战 Redis 分布式缓存6.0|学习笔记
|
缓存 NoSQL Redis
首页数据显示-添加 redis 缓存(3)| 学习笔记
快速学习 首页数据显示-添加 redis 缓存(3)
127 0
首页数据显示-添加 redis 缓存(3)| 学习笔记
|
缓存 NoSQL Java
首页数据显示-添加 redis 缓存(1) | 学习笔记
快速学习 首页数据显示-添加 redis 缓存(1)
202 0
首页数据显示-添加 redis 缓存(1) | 学习笔记