Redis的持久化共有三种方式:
- RDB
- AOF
- RDB与AOF的混合模式
下面我就将针对这几种模式,如何打开,关闭,持久化的文件形式,以及适用的场景来展开。
一、RDB
RDB,其实就是Redis的内存的dump文件,它的形式就是一堆二进制的东东。
1、打开RDB
Redis默认是打开RDB持久化的。
以下配置文件的任何一条触发,就会发生RDB的持久化。
save 900 1 # 900秒内发生一次键值变化,则发生持久化。
save 300 10 # 300秒内发生十次键值变化,则发生持久化。
save 60 10000 # 60秒内发生一万次键值变化,则发生持久化。
2、关闭RDB
注释上面的save命令,并在redis.conf配置文件中添加如下配置:
save ""
3、RDB特点
持久化恢复速度快,但是可能会丢失部分最近的数据。
4、手动RDB
使用如下命令:
bgsave
二、AOF
将Redis的执行命令写入文件。
1、打开AOF
在配置文件中,默认AOF是关闭的:
appendonly yes # 打开AOF持久化
appendfsync everysec/no/always # 多久将数据同步到磁盘中,选择everysec比较好
另外对于AOF文件的重写,有以下两个参数控制,默认是生效的:
auto-aof-rewrite-percentage 100 # AOF文件重写后,当AOF文件比重写后文件大100%,也就是变成2倍大小的时候,会再次发生重写
auto-aof-rewrite-min-size 64mb # AOF文件超过这个大小的时候,才会发生重写
2、AOF特点
丢失数据的可能性比较小,但是文件会比较大,数据恢复会比较慢。
3、手动AOF
运用命令:
bgrewriteaof
三、RDB与AOF的混合持久化
Redis4.0版本以后,有了混合持久化的模式,它的前部分是RDB格式的,后面的重写缓冲区的数据是通过AOF写入的。
1、打开混合持久化
在打开AOF的情况下,配置文件中,默认是生效的:
aof-load-truncated yes # 指redis在恢复时,会忽略最后一条可能存在问题的指令,默认值yes
aof-use-rdb-preamble yes # 是否打开RDB和AOF混合模式,默认yes打开