Redis入门到精通(二十二)——缓存预热、缓存雪崩、缓存击穿、缓存穿透

一、缓存预热

服务器启动之后可能会迅速宕机

问题排查

1.请求量较高
2.主从之间数据吞吐量较大,数据同步操作频度较高

解决方案

前置准备工作:
1.日常例行统计数据访问记录,统计访问频度较高的热点数据
2.使用LRU数据删除策略,构建数据留存队列,例如:storm和kafka配合

准备工作:
3.将统计结果中的数据分类,根据级别,redis优先加载级别高的热点数据
4.利用分布式多服务器同时进行数据读取,提取数据加载过程

实施:
1.使用脚本程序固定触发数据预热过程
2.如果条件允许,使用了CDN,效果会更好

总结

缓存预热就是系统启动前,提前将相关的缓存数据直接加载到缓存系统。避免在用户请求的时候,先查询数据库,然后再将数据缓存的问题!用户直接查询事先被预热的缓存数据!

二、缓存雪崩

1.数据库服务器崩溃(1)

 

 

2.问题排查:较短的时间内,缓存中较多的key集中过期

3.解决方案

道的方面

 

 

术的方面

 

总结:

缓存雪崩就是瞬间过期数据量太大,导致对数据库服务器造成压力。如果能够有效避免过期时间集中,可以有效解决雪崩现象的出现,
配合其他策略一起使用,并监控服务器的运行数据,根据运行记录做快速调整

三、缓存击穿

1.数据库服务器崩溃(2)

 

2.问题排查:单个key高数数据key过期

3.解决方案

 

 总结:

缓存击穿就是单个高热数据过期的瞬间,数据访问量较大,未命中redis后,发起了大量对同一数据的数据库访问,导致对数据库服务器造成压力。
应对策略应该在业务数据分析与预防方面进行,配合进行监控测试与即时调整策略,毕竟单个key的过期监控难度较高,配合雪崩处理策略即可。

四、缓存穿透

1.数据库服务器崩溃(3)

 

2.问题排查:出现非正常URL访问,黑客攻击服务器,穿透Redis服务器,对数据库攻击

3.解决方案

 

总结

 

posted @ 2020-05-20 22:16  只会玩辅助  阅读(460)  评论(0编辑  收藏  举报