• Redis 持久化配置,RDB和AOF方式配置说明


    如果您对Redis的了解不够深入请关注本栏目,本栏目包括Redis安装Redis配置文件说明Redis命令和数据类型说明

    一、概述

    • Redis 持久化是指将 Redis 数据存储到磁盘上,以便在 Redis 服务器重启后能够恢复数据的过程。Redis 提供了两种主要的持久化方式:

    • RDB 持久化(Redis Database)

      • RDB 持久化是将 Redis 数据以快照的形式保存到磁盘上的二进制文件。
      • RDB 文件是 Redis 在某个时间点上的数据快照,包含了所有数据的状态。
      • RDB 持久化适用于需要在特定时间点上备份数据或进行全量恢复的场景。
      • RDB 持久化使用 SAVE 或 BGSAVE 命令手动触发,也可以通过配置自动定期触发(查看Redis命令使用)。
    • AOF 持久化(Append-Only File)

      • AOF 持久化是将 Redis 的写操作以日志追加的方式记录到磁盘上的文件中。
      • AOF 文件是一个文本文件,记录了所有写操作的命令和参数
      • 通过重新执行 AOF 文件中的命令,可以还原出 Redis 数据的状态。
      • AOF 持久化适用于需要实时记录数据变更并保证最大数据安全性的场景。
      • AOF 持久化可以通过配置的方式实时记录命令,或者按一定的策略进行重写(AOF Rewrite)来压缩文件大小。
    • Redis 还提供了混合持久化的方式,即同时使用 RDB 持久化和 AOF 持久化。这种方式可以兼顾快速恢复和数据安全性。

    • Redis 还支持无持久化的模式,也就是不将数据持久化到磁盘,只保留在内存中。这种模式适用于对数据持久化要求不高或者仅用于缓存的场景。

    在这里插入图片描述

    二、RDB 持久化方式配置

    • 持久化原理

      • RDB持久化是Redis的一种快照持久化方式,它通过将内存中的数据快照写入磁盘文件,以便在需要时可以从磁盘文件还原数据
      • 优点是性能较高、恢复速度快、进行了数据压缩。
      • 缺点是实时性差,毕竟每次快照都有一定时间间隔。
    • 配置基本语法:save

      • 表示间隔多久触发一次
      • 表示变化数达到多少触发一次
      • 两个条件必须同时满足才会触发RDB持久化
    • 打开RDB持久化

      # 这里表示当时间超过900秒且至少有1个key变化时触发RDB持久化
      save 900 1
      # 这里表示当时间超过300秒且至少有10个key变化时触发RDB持久化
      save 300 10
      # 这里表示当时间超过60秒且至少有10000个key变化时触发RDB持久化
      save 60 10000
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
    • 关闭RDB持久化

      • 将save设置为空值,或者直接删除save配置,如下:
      save ""	
      
      • 1
    • 持久化其他配置

      • 这些配置也很关键,要准确配置
      • 持久文件目录如果不存在需手动创建
      # RDB 持久化文件名
      dbfilename dum.rdb
      # 持久化文件目录
      dir  /var/lib/redis/6379
      
      # 是否开启压缩
      rdbcompression yes
      # RDB文件校验位
      rdbchecksum yes
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
    • 检查RDB文件内容

      redis-check-rdb  dump.rdb
      
      • 1

      [root@yiqifu-redis 6379]# redis-check-rdb dump.rdb
      [offset 0] Checking RDB file dump.rdb
      [offset 26] AUX FIELD redis-ver = ‘6.0.6’
      [offset 40] AUX FIELD redis-bits = ‘64’
      [offset 52] AUX FIELD ctime = ‘1697161255’
      [offset 67] AUX FIELD used-mem = ‘865296’
      [offset 83] AUX FIELD aof-preamble = ‘0’
      [offset 85] Selecting DB ID 0
      [offset 125] Checksum OK
      [offset 125] \o/ RDB looks OK! \o/
      [info] 3 keys read
      [info] 0 expires
      [info] 0 already expired

    三、AOF 持久化方式配置

    • 持久化原理

      • 以追加(append)的方式将写操作追加到一个日志文件中,记录了Redis服务器接收的所有写命令,以便在需要时恢复数据。
      • 优点是实时性高,因为他是实时记录所有命令。
      • 缺点时实时记录会占用大量的空间,单纯的AOF恢复速度慢。所以一般与RDB结合使用。
    • 持久化配置

      • AOF持久化配置使用 appendonly ,当值为 yes 时开启AOF持久化,当值为 no 时关闭AOF持久化。
    • 打开AOF持久化(默认是关闭的)

      appendonly yes
      
      • 1
    • 关闭AOF持久化

      appendonly no
      
      • 1
    • 持久化其他配置

      • 这些配置也很关键,要准确配置
      • 持久文件目录如果不存在需手动创建
      # AOF 持久化文件名
      appendfilename "appendonly.aof"
      # 持久化文件目录
      dir  /var/lib/redis/6379
      
      # AOF 持久化级别(写入磁盘的速度)
      # 可配置为 alway=始终,everysec=每秒,no=根据系统缓冲区大小(4k)满flush决定。
      appendfsync everysec
      # 当在执行RDB持久化时,是否继续执行AOF持久化,默认是不执行
      no-appendfsync-on-rewrite no
      # 是否开启AOF和RDB混合模式
      aof-use-rdb-preamble yes
      
      # AOF 持久化自动重写触发条件配置,重写会对AOF文件进行压缩,如果开启混合模式会加入RDB方案。
      # 后续每次触发重写的条件是前一次触发重写后,再超过100%时触发重写
      auto-aof-rewrite-percentage 100
      # 开机后当aof文件达到64MB时会触发重写
      auto-aof-rewrite-min-size 64mb
      
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
    • 检查AOF文件内容

    redis-check-aof appendonly.aof
    
    • 1

    [root@yiqifu-redis 6379]# redis-check-aof appendonly.aof
    AOF analyzed: size=120, ok_up_to=120, diff=0
    AOF is valid

    • AOF 持久化旧版文件内容解析(没有压缩之前通过 cat appendonly.aof 命令可以查看)

      • *数字:表示当前命令要取几行。如*表示取2行,*3表示取3行。
      • $数字:表示接下要取多个少字节。如$6表示取6个字节,$3表示取3个字节。
      • 安装*n和$n取出来就一条完整的命令。
      *2
      $6
      SELECT
      $1
      0
      *3
      $3
      set
      $3
      aaa
      $3
      111
      *3
      $3
      set
      $3
      bbb
      $3
      222
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
  • 相关阅读:
    PostgreSQL中E‘string‘ 的使用
    SSM+文达学院贫困生认定系统 毕业设计-附源码261621
    Mac下更新python
    离线电商数仓(一)
    windows QT搭建FFMPEG环境
    ESP8266 WiFi物联网智能插座—电能计量
    K8S 极速入门
    高等数学(第七版)同济大学 习题3-5 个人解答
    MySQL数据库——存储引擎(2)-存储引擎特点(InnoDB、MyISAM、Memory)、存储引擎选择
    关于算法复杂度的几张表
  • 原文地址:https://blog.csdn.net/qifu123/article/details/134062468