zoukankan      html  css  js  c++  java
  • 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.解决方案

    总结

  • 相关阅读:
    AJAX的使用
    django.template.exceptions.TemplateDoesNotExist: login.html报错
    cookie、session
    关于zipfile解压出现的字符编码问题
    使用jquery清空input 文本框中的内容
    DVWA SQL-injection 附python脚本
    关于itchat用法的一篇博文
    记录两个python itchat的用法博客网址
    pyinstaller 打包.exe文件记录遇到的问题
    用python编写的excel拆分小工具
  • 原文地址:https://www.cnblogs.com/wangcuican/p/12926679.html
Copyright © 2011-2022 走看看