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.解决方案
总结