一线大厂Redis高并发缓存架构实战与性能优化--重点笔记
目录

1、中小公司Redis缓存架构以及线上问题分析
2、大厂线上大规模商品缓存数据冷热分离实战
3、实战解决大规模缓存击穿导致线上数据库压力暴增
4、黑客攻击导致缓存穿透线上数据库宕机Bug
5、一行代码解决线上缓存穿透问题
6、一次大V直播带货导致线上商品系统崩溃原因分析
7、突发性热点缓存重建导致系统压力暴增问题分析
8、基于DCL机制解决热点缓存并发重建问题实战
9、Redis分布式锁解决缓存与数据库双写不一致问题实战
10、大促压力暴增导致分布式锁串行争用问题优化实战
11、一次微博明星热点事件导致系统崩溃原因分析
12、利用多级缓存架构解决Redis线上集群缓存雪崩问题
1、中小公司Redis缓存架构以及线上问题分析
问题:若数据量大,则浪费内存。
方案:设置超时时间
2、大厂线上大规模商品缓存数据冷热分离实战
问题:访问量小的,不必要一直放在内存。
方案:访问量大的,重新延期(简单的冷热分离)

3、实战解决大规模缓存击穿导致线上数据库压力暴增
由于大批量缓存在同一时间失效可能导致大量请求同时穿透缓存直达数据库,可能会造成数据库瞬间压力过大
甚至挂掉,对于这种情况我们在批量增加缓存时最好将这一批数据的缓存过期时间设置为一个时间段内的不同
时间

4、黑客攻击导致缓存穿透线上数据库宕机Bug
缓存穿透
缓存穿透是指查询一个根本不存在的数据, 缓存层和存储层都不会命中, 通常出于容错的考虑, 如果从存储
层查不到数据则不写入缓存层。
缓存穿透将导致不存在的数据每次请求都要到存储层去查询, 失去了缓存保护后端存储的意义。
造成缓存穿透的基本原因有两个:
第一, 自身业务代码或者数据出现问题。
第二, 一些恶意攻击、 爬虫等造成大量空命中。
问题1:2000102XXX请求一个不存在的商品问题。
问题2:请求多个不存在的商品问题。
5、一行代码解决线上缓存穿透问题
问题1解决方案:
1,设置空对象
2,并判断是否为空,若为空则返回空值。

问题2解决方案:
1,设置空对象,并设置随机过期时间。
2,并判断是否为空,若为空则从新设置过期时间,以防空值过期,继续形成穿透效果,并返回空值。

3,布隆过滤器

6、一次大V直播带货导致线上商品系统崩溃原因分析
原本一次冷门的商品售卖,导致数十万数百万的请求到数据库层,可能导致数据库宕机。(相当于一次缓存击穿)
7、突发性热点缓存重建导致系统压力暴增问题分析
相当于一次性要将很多冷门数据重建为热点数据。
8、基于DCL机制解决热点缓存并发重建问题实战
双重检测锁 DCL
一个线程增加缓存成功,其他线程就不会再去请求数据库。
1,syschronized能解决单机服务多线程问题,但是不能解决分布式锁问题。
2,RLock解决

9、Redis分布式锁解决缓存与数据库双写不一致问题实战
问题:因为get查询和update修改中都有对数据库和缓存的操作,容易导致多线程并发问题,会引起缓存和数据库双写不一致。

方案:再加一个修改分布式锁

10、大促压力暴增导致分布式锁串行争用问题优化实战
1,用redisson的读写锁,读加读锁,写加写锁。RReadWriteLock 锁key要一致。



11、一次微博明星热点事件导致系统崩溃原因分析

问题:redis扛不住,一般只是10W左右并发。
12、利用多级缓存架构解决Redis线上集群缓存雪崩问题
方案一:JVM进程缓存

13 info命令
能看到很多redis的基础信息


浙公网安备 33010602011771号