2020.6.3 Redis Day04

发布于 2020-06-03  59 次阅读


Table of Contents

  • pipe = r.pipeline()
    pipe.set('fans',50) # 多条命令
    pipe.execute()
    pipe.get('fans') # 多条命令
    pipe.execute() # 执行

  • python恢复备份

    • 两种数据库同时开启,优先使用AOF恢复数据库
  • Redis分布式锁是怎么回事?

    • 多个进程同时去拿一个数据,如果执行成功释放锁,下一个进程可以拿到锁执行程序
    • 具有阻塞时间,避免了死锁,
    • 典型应用:秒杀
  • Redis 缓存穿透(防止攻击)

    • 原理:
      • 缓存和数据库都没有的数据,用户反复发送数据查询,假的数据,用户id
    • 场景
      • 发起id为-1或者非常大的数据,这就属于一种攻击,倒是数据库压力过大
    • 解决方案
      • 请求效验,对id<=0直接拒绝
      • 无法获取的数据将key和value(空值)存入缓存,设置有效缓存时间,可以防止用户反复用同一个id暴力攻击
  • Redis 缓存击穿(逻辑处理不好)

    • 原理:
      • 缓存过期之后,缓存没有数据,数据库有,导致瞬时并发太大
    • 方案:
      • 热点数据不过期(大访问量,常被访问)
      • 上锁:重新设置缓存使用方式,查询key,先查缓存,没有就通过锁来访问
  • Redis 缓存雪崩

    • 原理
      • 缓存中大量数据过期,瞬间进入数据库大批量请求
    • 解决方案
      • 1,缓存设置随机时间(避免同一时间大量请求)
      • 2,热点数据不过期(大访问量,常被访问)
  • 哈希碰撞

    • redis已经做了技术处理
    • 常用哈希碰撞的方法:单链表,二次地址,二次哈希
    • 在计算key的位置时候,两个key的位置一样,就是哈希碰撞,
  • 4.扩展延伸知识

    5.知识内容个人梳理

    6.今天都复习了之前的什么内容