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

文章目录

    • 一、概述
    • 二、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 还支持无持久化的模式,也就是不将数据持久化到磁盘,只保留在内存中。这种模式适用于对数据持久化要求不高或者仅用于缓存的场景。

Redis 持久化配置,RDB和AOF方式配置说明_第1张图片

二、RDB 持久化方式配置

  • 持久化原理

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

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

    • 在 redis.conf 配置文件中添加类似如下配置,即可打开Redis的RDB持久化,有关Redis更多配置请看这。
    # 这里表示当时间超过900秒且至少有1个key变化时触发RDB持久化
    save 900 1
    # 这里表示当时间超过300秒且至少有10个key变化时触发RDB持久化
    save 300 10
    # 这里表示当时间超过60秒且至少有10000个key变化时触发RDB持久化
    save 60 10000
    
  • 关闭RDB持久化

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

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

    redis-check-rdb  dump.rdb
    

    [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持久化(默认是关闭的)

    • 在 redis.conf 配置文件中添加类似如下配置,即可打开Redis的AOF持久化,有关Redis更多配置请看这。
    appendonly yes
    
  • 关闭AOF持久化

    appendonly no
    
  • 持久化其他配置

    • 这些配置也很关键,要准确配置
    • 持久文件目录如果不存在需手动创建
    # 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
    
    
  • 检查AOF文件内容

redis-check-aof appendonly.aof

[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
    

你可能感兴趣的:(#,Redis,运维,redis,缓存,数据库,nosql)