• Redis可能出现的问题


    缓存穿透

    一般出现这样的问题,是因为当我们查询一条肯定不存在的数据的时候,缓存中没有,就会透过缓存来查询数据库,数据库也不存在,这样就不会将值保存在缓存中,最后还是缓存和数据库中都没有,如果一直访问这条数据。我们就对数据库进行频繁的查询,给数据库带来压力;

    解决方法:当查询的时候,如果缓存和数据库中都没有,我们就将这个数据以空的形式存放在缓存中,(或者是给一个false的标示)这样就不用去数据库就可以知道不存在,减少对数据库查询的次数,当我们这个值发生改变的时候,我们在重新进行赋值;

    并发情况

    当我们大量访问都是查询一个缓存中没有的数据时,这样就会都去数据库中进行查询,可能会造成数据库的宕机;

    解决方法:在查询的时候,我给他添加了一个同步锁,只有第一条数据去数据库中查并且返回到redis中后才能查询,这是数据库中已近存在了值,这样也可以避免;

    缓存雪崩 

    大量数据的缓存时间失效,这样用户就会访问到数据库,第一台数据库崩溃了,访问就会到第二台数据库进行查询,这样会导致第二台的也崩溃;

    解决方法:就是设置失效时间时,不要一起失效,或者是设置在访问量少的时候,或者设置为永远不失效;

    缓存击穿

      是指一个key非常热点,在不停的扛着大并发,大并发集中对这一个点进行访问,当这个key在失效的瞬间,持续的大并发就穿破缓存,直接请求数据库,就像在一个屏障上凿开了一个洞。

      解决方法:对热门访问key早早的做好了准备,让缓存永不过期;

  • 相关阅读:
    BotVS开发基础—2.7 指标MACD
    BotVS开发基础—2.7 指标MA
    BotVS开发基础—2.5 策略交互
    BotVS开发基础—2.5 绘制图表
    BotVS开发基础—2.5 状态信息显示表格
    BotVS开发基础—2.4 获取订单、取消订单、获取未完成订单
    BotVS开发基础—2.3 下市价单 交易
    BotVS开发基础—2.2 下限价单 交易
    BotVS开发基础—2.1 账户、行情、K线、深度
    python的eval函数
  • 原文地址:https://www.cnblogs.com/szwdun/p/10999098.html
Copyright © 2020-2023  润新知