Redis复习提纲

第1-7章:数据结构

笔记:https://blog.csdn.net/qq_41157876/article/details/108875869

数据结构

  • 简单动态字符串(SDS)
    • 优点:O(1)获取长度;空间预分配,惰性空间释放
  • 链表
  • 字典
    • 渐进式rehash
  • 跳跃表
  • 整数集合
    • 升级
  • 压缩列表
    • 连锁更新带来的问题

第8章:对象

笔记:https://blog.csdn.net/qq_41157876/article/details/108878853

五种对象

  • string(int + embstr sds+ raw sds)
  • list(ziplist + linkedlist)
  • hash(ziplist + dictht)
  • set(intset + dictht)
  • zset(ziplist + (skiplist+dictht))

redisObject

第8章(2):其他

笔记:https://blog.csdn.net/qq_41157876/article/details/108891475

多态实现

内存回收

内存共享

空转时长

常用命令

第9章:数据库

笔记:https://blog.csdn.net/qq_41157876/article/details/108892815

  • 服务器
    • RedisServer
    • RedisClient
  • 数据库
    • RedisDb(KV键值对 + 过期字典)
    • 读写时的其他维护操作
  • 过期时间
    • 命令
    • 两种过期策略
    • 淘汰策略
  • 持久化对过期键的处理
    • 写入RDB,载入RDB,写入AOF,重写AOF,复制

第10,11章:RDB和AOF持久化

笔记:https://blog.csdn.net/qq_41157876/article/details/108906695

  • RDB
    • 命令
      • SAVE
      • BGSAVE
    • BASAVE的自动定时保存
      • save配置
      • 执行原理:RedisServer中的saveparams,dirty,lastsave属性
    • RDB文件结构
  • AOF
    • AOF与RDB区别
    • AOF实现原理(三个写入策略)
    • AOF载入
    • AOF重写
    • AOF后台重写

第12章:Redis单线程模型

笔记:https://blog.csdn.net/qq_41157876/article/details/113886351

  • 文件事件(Redis线程模型)
    • Reactor模型
    • 四个组件
      • sockets:READABLE和WRITABLE
      • I/O多路复用:epoll,select,poll
      • dispatcher
      • handler:连接,接受命令,回复
    • 运行机制
  • 时间事件
  • 总体执行流程
  • 模型优势(高效原因)
  • 参考:epoll, select, poll

第13,14章:redisClient + redisServer + 交互过程 + serverCron函数

笔记:https://blog.csdn.net/qq_41157876/article/details/108914410

  • redisClient
    • 结构
    • 创建与关闭
    • 伪客户端
  • redisServer
    • 结构
    • 初始化
  • Client和Server交互过程
  • serverCron时间事件函数(12件事)

第15章:复制

笔记:https://blog.csdn.net/qq_41157876/article/details/108970108

复制

  • 完整重同步
  • 部分重同步

部分重同步的实现

  • 复制偏移量
  • 复制积压缓冲区
  • 服务器运行ID

PSYNC的过程

  • 建立连接和同步判断(完整/部分)
  • 复制数据

复制(建立连接 + 身份验证 + PSYNC + 数据同步)

建立连接后的心跳检测

  • 每秒发送命令
  • 三个作用(检测网络状态,min-slaves配置,检测命令丢失)

第16章:哨兵机制

笔记:https://blog.csdn.net/qq_41157876/article/details/113945501

  • 概述
  • 启动和初始化
    • conf配置和启动命令
    • 启动流程
      • 不执行AOD和RDB,Sentinel专用代码
      • sentinelState结构体
      • sentinelRedisInstance结构体,记录监视的主从服务器
      • 订阅 + 命令连接
  • Sentinel与主从服务器的交互
    • Sentinel如何初始化 主服务器 信息
    • Sentinel如何初始化 从服务器 信息
    • Sentinel向 订阅频道发送信息
    • Sentinel如何初始化 其他Sentinel 信息
    • 总结
  • 下线判断和故障修复
    • 下线判断
      • 主观检测
      • 客观检测
      • raft算法——选举领头sentinel
    • 故障修复
      • 选出新master
      • 更改其他slaves的复制目标
      • 将旧master修改为slave

第17章:集群

笔记:https://blog.csdn.net/qq_41157876/article/details/113985840

  • 概述
  • 节点和集群
    • 命令(conf + 握手 + 查看)
    • 数据结构
      • clusterState
      • clusterNode
      • clusterLink
  • 槽(slot)和分片
    • 概述
    • 命令
    • 结构(clusterState.slots[] 和 clusterNode.slots[])
    • 自动转发操作机制(MOVED错误)
    • hash分配 - CRC16
    • 跳跃表
  • slot重新分片
    • redis-trib 重新分片原理
    • ASK错误(cf MOVED错误)
  • 复制和故障转移
  • 消息

其他:Redis实现分布式锁

笔记:https://blog.csdn.net/qq_41157876/article/details/115460197

分布式锁

  • 基于数据库实现分布式锁
  • 基于缓存Redis实现分布式锁
    • Redisson
  • 基于Zookeeper实现分布式锁

其他:Redis使用场景

笔记:

https://blog.csdn.net/qq_35568881/article/details/78779679

其他:缓存穿透 / 雪崩 / 击穿

笔记:https://blog.csdn.net/qq_41157876/article/details/114024560

  • 缓存穿透
    • BloomFilter
  • 缓存雪崩
  • 缓存击穿
  • 布隆过滤器

猜你喜欢

转载自blog.csdn.net/qq_41157876/article/details/109291853