目的: 防止数据丢失对数据进行备份(磁盘)
实现方式:
直接拷贝内存中的数据保存到磁盘(RDB)记录用户的操作日志(AOF)
RDB
save指令进行手动RDB过程
RDB启动方式 —— save指令相关配置
daemonize yes
port 6379
// 设置存储.rdb文件的路径
dir ./data
#logfile "logfilr.log"
//本地数据库文件名,默认值为 dump.rdb,通常设置为dump-端口号.rdb
dbfilename "mydump.rdb"
执行save指令
bgsave (background save) 指令进行手动RDB过程
save指令执行时会阻塞redis的进程bgsave会创建子进程去执行备份操作,而不会阻塞redis
save配置进行自动RDB过程
配置频率,底层任然使用的bgsave指令
save 秒 次数
daemonize yes
port 6379
dir ./data
#logfile "logfilr.log"
dbfilename "mydump.rdb"
save 30 1
AOF(记录操作日志)
AOF写数据过程
修改配置文件
daemonize yes
port 6379
dir ./data
#logfile "logfilr.log"
dbfilename "mydump.rdb"
save 30 1
appendonly yes //开启AOF持久化功能,默认no
appendfilename "append.aof" // AOF持久化文件名
appendfsync everysec // AOF写数据策略,默认为everysec
AOF写数据三种策略(appendfsync)
always(每次):每次写入操作均同步到AOF文件中 数据零误差,性能较低,不建议使用。everysec(每秒):每秒将缓冲区中的指令同步到AOF文件中,在系统突然宕机的情况下丢失1秒内的数据 数据准确性较高,性能较高,建议使用,也是默认配置no(系统控制):由操作系统控制每次同步到AOF文件的周期 整体过程不可控
AOF的重写机制
目的:去掉没有意义的指令记录
实现方式:
手动: bgrewriteaof, 压缩aof文件
自动:
auto-aof-rewrite-min-size size
auto-aof-rewrite-percentage percent
自动重写触发比对参数( 运行指令info Persistence获取具体信息 )
aof_current_size
aof_base_size
自动重写触发条件
aof_current_size>auto-aof-rewrite-min-size
(aof_base_size - aof_current_size)/aof_base_size>=auto-aof-rewrite-percentage