redis持久化分为两种RDB(redis DB)
和AOF(appendonlyfile)
一、RDB
在默认的情况下redis将数据以快照保存到dump.rdb的二进制文件中,里面存的是数据。 发生故障时,数据容易丢失。
方式:产生一个rdb
- 阻塞方式:有写操作时,redis不能提供服务。一般不用
- 非阻塞方式:bgsave 子进程去写数据
默认配置策略:
秒 写的操作次数
save 60 10000
save 300 10
save 900 1
二、AOF
不能保证数据不丢失,文件里面存的是命令数据,默认是关闭的
要开启aof改配置文件
appendonly yes
配置策略:
appendfsync的选项
- always:服务器每写一个命令就调用一次fdatasync,将缓冲区buffer的命令数据,写入到硬盘。发生故障最多丢一条命令,安全可靠,效率低。
- everysec: (默认) 服务器每一秒钟,写入一次,最多丢失一秒数据
-
no: 服务器不主动调用fdatasynce,由操作系统决定何时将缓冲区中的命令数据写入硬盘。最多丢失一个缓冲区的数据,不可靠。
机器重启后redis会重写aof命令数据,重写就是减小aof文件的大小。
两种方式都开启的话,重启后只恢复aof文件命令。