redis概览

redis

redis监控指标选择

connected_clients:68 #连接的客户端数量

used_memory_rss_human:847.62M

used_memory_peak_human:794.42M

total_connections_received:619104 #服务器已接受的连接请求数量

instantaneous_ops_per_sec:1159 #服务器每秒钟执行的命令数量

instantaneous_input_kbps:55.85 #redis网络入口kps

instantaneous_output_kbps:3553.89 #redis网络出口kps

rejected_connections:0 #因为最大客户端数量限制而被拒绝的连接请求数量

expired_keys:0 #因为过期而被自动删除的数据库键数量

evicted_keys:0 #因为最大内存容量限制而被驱逐(evict)的键数量

keyspace_hits:0 #查找数据库键成功的次数

keyspace_misses:0 #查找数据库键失败的次数

redis简介

redis是一种支持Key-Value等多种数据结构的存储系统。可用于缓存、事件发布或订阅、高速队列等场景。该数据库使用ANSI C语言编写,支持网络,提供字符串、哈希、列表、队列、集合结构直接存取,基于内存,可持久化。

对象

场景

数据结构

  • 动态字符串
    *
    * vs string
    * 常数时间获取长度
    * 杜绝字符串溢出
    * 先检查,在扩容,最后拼接
    * 减少重新分配次数
    * 预分配
    * 惰性回收
    * 二进制安全
    • 用途
      • redis 字符串
      • AOF缓冲区
      • 客户端输入输出缓冲
    • 总结
  • 链表
    • 结构
      • 节点
      • 节点持有
    • 用途
      • 列表底层实现之一
      • 发布订阅
      • 慢查询
      • 定时器
    • 总结
  • 字典
    • 用途
      • 数据库
      • hash
    • 实现
      • hash表
        • 节点
    • 总结
  • 跳跃表
    • 概念
      • 节点中维持到其它节点的指针,达到快速访问
    • 应用
      • 有序集合的实现之一
    • 结构
      • 对比
        • 组成
          • 节点
          • list
    • 总结
  • 整数集合
    • 应用
      • 集合键实现之一
    • 结构
      *
    • 升级
      • 升级
    • 总结
  • 压缩列表
    • 应用
    • 概念
      • 组成
        • 节点
    • 总结
  • 对象
    • 说明
    • redis数据类型
      • string
        • 场景
        • 转换
      • list
        • 场景
          • 子主题 1
          • 子主题 2
        • 转换
          • 子主题 1
      • hash
        • 场景
          • 组成
            • 压缩列表
            • hashtable
        • 转换
          • 转换
      • set
        • 场景
          • 组成
            • 组成
        • 转换
          • 转换
      • zsort(sort set)
        • 场景
          • 组成
            *
        • 转换
        • 同时使用原因
          • 结构
    • 对象编码
      • 子主题 1
    • 不同类型对象编码
      • 子主题 1
    • 内存
      • 引用计数
      • 共享内存
    • 总结
      *

单机数据库

数据库

  • 数据库结构与切换
  • 数据库键空间
  • 过期键
    • 判定
    • 删除策略,redis采用惰性和定期
      • 备份时
        • rdb
          • 不载入过期数据
        • aof
          • 没被删除正常复制,过期删除时追加del命令
        • 主从复制
          • 删除由主数据库执行,并向所有数据库发送显示del
  • 通知
  • 总结

rdb

  • 简介
  • 创建载入
  • 总结

aof

  • 简介
  • 实现
    • 追加
      • 写入策略
    • 写入
    • 同步,AOF 缓冲区的作用:目的是维持主线程 AOF 文件的正常写入,保证在重写阶段,AOF 文件写入的逻辑不变。
      AOF 重写缓存区作用:目的是记录 AOF 重写开始之后的键增删改的命令。
      这两个缓冲区缺一不可。具体原因如下:
      AOF 缓冲区的内容会根据 appendfsync 策略的不同而不同,如果 appendfsync=always,那么每次命令都会立即被刷入到磁盘里,可能 AOF 缓存区就没有数据。而 AOF 重写缓存区一定是从重写开始之后所有的键增删改的命令。两个缓冲区从存在意义上来看是完全不一样的,前者侧重于功能,后者更加侧重于备份。
      • 过程
  • 总结
    *

事件

  • 文件事件
    • 文件处理器
      • 概念
      • 组成
        • 多路复用程序
  • 时间事件
    • 属性
    • 分类
      • 定时事件
      • 周期事件
    • 执行
  • 总结
    *

客户端

  • 总结
    *

服务端

  • 总结
    *

多机数据库

复制

  • 旧版
    • 同步
      • 步骤
    • 命令传播
      • 主数据库被修改导致不同步,主服务器会将不同步的命令就行传播使主从一致
    • 缺陷
      • 断线时恢复消耗大
  • 场景
    *
  • 新版
    *
    * 新版流程
    • 部分同步
      • 主从服务器复制偏移量
        *
      • 复制缓冲区
        • 实例
      • 服务器运行id
        *
  • 总结
    *

sentinel

  • 概念
    • 管理集群主服务器状态,主服务下线时从中选主,实现高可用
  • 监视
    • 主数据库,从数据库,sentinel
    • 监测主观下线
      *
    • 客观下线
      *
      * 选举leader sentinel
      * 将自己的选举人作为选举人推出,初始化时是自己,先到先得,循环选举,得到半数以上者胜出
  • 故障转移
    *
    * 主服务器选举
    * 数据最新,优先级,复制偏移量,id大小
  • 总结
    *

集群

  • 基本命令
    • cluster meet
  • 节点
    • cluster node
      • cluster link
        • cluster state
  • 槽指派
    *
    *
    * node
    * state
    • 流程
      • 重新分片
  • 复制和故障转移
    • 故障转移
  • 总结
    *

独立功能

发布订阅

慢查询

监视器

*redis学习图

redis概览