Redis - 大厂程序员是怎么用的|青训营笔记

71 阅读2分钟

pexels-alina-matveycheva-15212819 (2).jpg

这是我参与「第五届青训营 」笔记创作活动的的第16天

本节导航

  • Redis基本工作原理

  • Redis应用案例

  • Redis注意事项

  • Redis实现数据持久化的原理

    • RDB:是一种快照存储持久化方式,原理就是将Redis某一时刻的内存数据写入到RDB文件中,并保存到磁盘上。

    • 触发RDB文件生成的方式:

      • *手动触发: *通过命令手动生成快照
      • *自动触发: *通过配置参数的设置触发自动生成快照
    • AOF(append only file)持久化:与RDB存储某个时刻的快照不同,AOF是将客户端的每一个写操作命令都记录到日志中,追加到后缀为aof 的文件末尾,在Redis服务器重启时,会加载并运行aof文件的所有命令,以达到恢复数据的目的。

    • AOF文件生成的方式

      • 手动触发: bgrewriteaof ``命令(该命令会重新aof,下面有讲)
      • 自动触发:根据配置规则,当然自动触发的整体时间还跟Redis的定时任务频率有关系
  • Redis单线程处理命令的概念

    • redis非常快,而且是单线程的,这里说的单线程是指单线程处理命令,而实际上redis是多线程的,很多异步操作都是给后台线程进行操作的。 高效的原因:

      1. 内存级,读写速度快,不受磁盘IO限制
      2. 数据结构设计简单以及高效,很多结构操作都是O(1)
      3. 单线程 (1)没有竞争,不需要锁 (2)没有线程切换,不需要上下文切换 (3)串行执行,保证每个操作都是原子性的
      4. IO多路复用架构,非阻塞IO

Redis应用案例

  • 掘金连续签到,需要了解GET/SET,Key过期
  • 掘金用户计数,使用到HASH
  • 排行榜ZSET
  • 使用SETNX实现分布式锁

Redis注意事项

  • 大Key:Value大于10KB就是大Key,使用大Key将导致Redis系统不稳定
  • 热Key:一个Key的QPS特别高,将导致Redis实例出现负载突增,负责均衡流量不均的情况。导致单实例故障
  • 慢查询:大Key、热Kye的读写;一次操作过多的Key(mset/hmset/sadd/zadd)
  • 导致缓存穿透、缓存雪崩的场景及避免方案