zoukankan      html  css  js  c++  java
  • 缓存中存在的三个问题及相关图解(图示解决方式) redis


    正常的缓存,查到返回,查不到就null的,而没有缓存key,持续大量请求,都查询到数据库了。
    这个也类似网页端的DDOS攻击

    时间太久远差点记不起来了。

    类似这样的攻击,都与缓存中第一个问题还是有相似之处,因为都是恶意人为的攻击。

    缓存穿透
    (根据某个key查不到缓存的数据,用户不会一直请求,额外情况是也许不是恶意的,比如taobao的秒杀活动和其它优惠限时限量活动,12306的抢票,用户还是需要刷网页或者刷某个接口的)

    第一种缓存问题 缓存穿透的解决方式

    TTL:

    当 key 不存在时,返回 -2 。 当 key 存在但没有设置剩余生存时间时,返回 -1 。 否则,以毫秒为单位,返回 key 的剩余生存时间。
    
    注意:在 Redis 2.8 以前,当 key 不存在,或者 key 没有设置剩余生存时间时,命令都返回 -1 。
    
    redis> FLUSHDB
    OK
    
    redis> TTL key
    (integer) -2
    
    
    # key 存在,但没有设置剩余生存时间
    
    redis> SET key value
    OK
    
    redis> TTL key
    (integer) -1
    
    
    # 有剩余生存时间的 key
    
    redis> EXPIRE key 10086
    (integer) 1
    
    redis> TTL key
    (integer) 10084
    

    ps:话说有些教程网站上的编辑啊真不用心

    推荐的redis教程还是cn官方好 https://www.redis.net.cn/

    缓存的第二个问题
    缓存雪崩

    缓存雪崩的问题就是说很多TTL设定的规格一致,失效时都失效,造成数据库的大面积压力
    解决方式是错开TTL设定的时长

    3
    缓存击穿

    缓存击穿是说,这个key有,但是一旦过期失效时,特大量请求贯穿而入,导致数据库的压力
    “在一张薄膜纸上凿出了一个洞️”
    解决方式:设定这个热点的key 不过期

  • 相关阅读:
    厂商前缀
    文本阴影和边框阴影
    2D转换
    overflow属性
    margin属性
    CSS圆角边框
    浮动定位
    文档流定位
    position属性
    选择器二
  • 原文地址:https://www.cnblogs.com/ukzq/p/15748026.html
Copyright © 2011-2022 走看看