Redis 入门 3

Redis配置

  1. RDB --> Redis DataBase
  • 根据配置文件SAVE规则执行持久化,由子进程执行;主进程不进行IO操作
  • 满足以下触发条件时,会自动生成dump.rdb文件
    • 满足save条件时
    • 执行flushall时
    • 关闭服务器时
  • 恢复数据
    • 将rdb文件放到启动目录,Redis会自动扫描并恢复数据
  • 查看dump.rdb文件需要存放的位置 --> 此目录下的rdb文件数据会自动回复
    config get dir

如 "/usr/local/var/db/redis"

  • 适用场景
    • 适合大规模数据
    • 对数据完整性要求不高
  • 缺点
    • 意外宕机时,最后一次数据没有保存
    • fork子进程占用一定内存
  1. AOF --> Append Only File
  • 概念:将所有命令都记录下来(只追加不可改写),恢复的时候再执行一遍(读操作不记录)
  • 将配置文件中开启项设置为yes,重启服务器就可以生成appendonly.aof文件
  • 可通过redis-check-aof修复有错误的aof文件;否则服务器将无法正常启动
    redis-check-aof --fix appendonly.aof
  • 优点
    • 每次修改都同步,文件完整性更好
    • 每一秒同步,可能会丢失1秒的数据
    • 不同步,效率最高
  • 缺点
    • 对于数据文件,aof远大于rdb,修复速度也慢
    • Aof运行效率也较慢,默认为rdb模式

redis发布订阅

  1. 发布订阅:带有关注功能的系统,利用消息队列实现
  2. 测试
  • 订阅端:订阅channel频道
    subscribe channel
  • 发送端:通过channel频道发布消息
    publish channel message
  1. 原理
  • 源码用c编写
  • 频道用字典存储,每个频道接一个链表;当频道更新时,发送至链表的每个节点
  1. 场景
  • 实时消息系统
  • 实时聊天室(发送者将订阅者发给发送者的消息群发给所有订阅者)
  • 订阅、关注系统

Redis主从复制

  1. 主从复制:从主节点(master/leader)将数据复制给从节点(slave/follower);
  2. 特点:单向复制;主节点以写为主,从节点以读为主(可减缓服务器压力)
  3. 作用
    • 数据冗余
    • 故障恢复
    • 负载均衡(读写分离)
    • 高可用基础:(哨兵和集群实现的基础)
  4. 默认每个主机都是主节点;从节点只能有一个主节点;
  5. 单机模拟主从复制的环境配置
    1. 配置步骤
    • 只配置从库,主库默认;查看当前库的信息命令
      info replication
    • 修改从机的配置文件中重复项目名字,避免重复;按指定配置文件启动三个服务
      • port
      • pidfile name
      • logfile name
      • dbfilename
    • 两个从机中配置命令,地址和端口指定三个服务中的一个,作为主机
      slaveof hostname port
    1. 全量复制:从机重启后,主机将全部数据复制到该从机
      增量复制:后续再增加数据,将逐渐复制给从机
    2. 链接模式
      • 一对多
      • 接龙
    3. 如果主机断了,使用命令使自己变为主机;其他子节点手动再链接到主机上
      slaveof no one

哨兵模式 sentinel

  1. 概念
    当主机宕机时,先做故障转移(failover),通过投票选出新的主机
  2. 新建哨兵进程,通过给redis服务器发送命令,等待回复,从而判断各服务器是否正常
  3. 一般都会设置多个哨兵进程
    • 主观下线:当某个哨兵观察到主机宕机
    • 客观下线:当哨兵通过投票切换主机,将主机下线
  4. 配置哨兵配置文件 --> 新建sentinel.conf
    sentinel monitor myredis 127.0.0.1 6379 1监控主机myredis 接对应地址和端口,1为投票模式
  5. 启动哨兵
    redis-sentinel filepath/sentinel.conf
  6. 哨兵规则
  • 如果主机宕机,从机自动投票选出新主机
  • 当宕机的主机回来,只能归并到新的主机下当从机
  1. 优点
    • 基于主从复制,因此主从复制的优点都继承
    • 系统可用性更好,故障可以转移
    • 主从模式的升级,从手动到自动,更健壮
  2. 缺点
    • 不好在线扩容
    • 配置哨兵模式很复杂

缓存穿透与雪崩

  1. 缓存穿透(查不到)
    • 概念:请求查询的数据,缓存和数据库都没有;大量此类查询可能使服务器宕机
    • 解决方案
      • 布隆过滤器:一种数据结构,在控制层先校验,减轻对数据库的访问压力
      • 缓存空对象:在缓存中新建空对象;缺点:缓存空间变大浪费、缓存和数据库一段时间不一致
  2. 缓存击穿(量太大,缓存过期)
    • 解决方案:缓存不过期、加互斥锁(分布式锁:每个key同时只有一个线程去查询,其余等待)
  3. 缓存雪崩
    • 概念:在某一时间段,缓存集中过期失效,或redis宕机
    • 解决办法:
      • 高可用:异地多活
      • 限流降级:通过加锁控制访问数据库或写缓存的线程数量
      • 数据预热:提前手动访问,以加载数据至缓存,并将过期时间设置均匀
posted @ 2022-02-10 16:20  蓝天可乐  阅读(24)  评论(0编辑  收藏  举报