zoukankan      html  css  js  c++  java
  • c# redis之缓存击穿雪崩

    https://www.bilibili.com/video/BV12b4y1y7CR?spm_id_from=333.999.0.0

    1 缓存击穿
    缓存击穿指的是可能是由于缓存时间到期,这时并发用户特别多,同时在缓存中没读到数据,然后又都到数据库去读数据,导致数据库压力过大

    解决方法:可以加锁,设置热点数据(限制redis占用的内存大小,超过这个限制之后redis根据自身的淘汰策略优先删除最少使用的数据),注意,淘汰策略都是在配置文件中配置的。

    2 缓存雪崩
    指缓存中数据大批量到过期时间,而查询数据量巨大,引起数据库压力过大甚至down机。
    解决方案:缓存数据的过期时间设置随机,防止同一时间大量数据过期现象发生。
    然后还是设置热点数据。
    3 缓存穿透:key对应的数据在数据源并不存在,每次针对此key的请求从缓存获取不到,请求都会到数据源,从而可能压垮数据源。比如用一个不存在的用户id获取用户信息,不论缓存还是数据库都没有,若黑客利用此漏洞进行攻击可能压垮数据库。

    解决方法: 如果一个查询返回的数据为空(不管是数据不存在,还是系统故障),我们仍然把这个空结果进行缓存,就是说将传来的key值存储到redis中,只不过对应的值是空值,但它的过期时间会很短,最长不超过五分钟(因为是没什么意义的数据,没必要存太长时间)。这样可以有效避免短时间内重复的调用,导致数据库崩溃

  • 相关阅读:
    Druid数据库密码加密
    jenkins 构建时不能自动结束的问题
    4、TypeScript 类
    3、TypeScript 函数
    2、Typescript 中的数据类型
    1、TypeScript安装、开发工具
    Markdown 基本格式
    解决邮箱下载下来的word打不开的问题
    winform在禁用控件上显示工具提示
    日常问题集
  • 原文地址:https://www.cnblogs.com/anjingdian/p/15383355.html
Copyright © 2011-2022 走看看