文章目录
- 一、概述
- 二、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持久化
- 基本语法:save
-
打开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结合使用。
-
持久化配置
- 基本语法:save
- 表示间隔多久触发一次
- 表示变化数达到多少触发一次
- 两个条件必须同时满足才会触发RDB持久化
- 基本语法:save
-
打开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