RDB(Redis DataBase)
修改配置文件
save 900 1 ##900s以内改过一次
save 300 10 ## 300s该10次
save 60 10000 ##60s1w次
stop-writes-on-bgsave-error yes ##当后台备份出错,就停止写操作,如果配置成no表示会出现数据不一致
rdbcompression yes ##开启压缩
rdbchecksum yes ##在存储快照后,让redis采用crc64算法进行数据校验,会增加cpu10%的性能消耗(默认开启)。
其他
dump文件默认为dump.rdb
查看dump文件位置 config get dir
当条件满足,redis需要执行RDB的时候,服务器会执行以下操作:
1. redis调用系统函数fork() ,创建一个子进程。
2.子进程将数据集写入到一个临时 RDB 文件中。
3.当子进程完成对临时RDB文件的写入时,redis 用新的临时RDB 文件替换原来的RDB 文件,并删除旧 RDB 文件。
save或bgsave(后台异步保存)命令可直接生成dump文件,不依赖配置条件
flushall也会产生dump.rdb但会清空内存,dump为空毫无意义。
优势
适合大规模的数据恢复
对数据的完整性和一致性要求不高
劣势
因为实在一定时间内做一次备份,如果rdis意外挂掉,就会丢失最后一次快照后的修改;
fork的时候,由于内存中的数据copy了一份,所以会出现内存问题
AOF(Append Only File)
以日志的形式记录每个写操作,将redis执行过的有写指令记录下来(读操作不记录),只需追加文件,不允许修改文件。redis启动之初会读取该文件来重新构建数据。(Redis重启的话就是根据日志文件将写指令执行一次已完成数据的恢复工作)
开启:appendonly yes ##文件默认名字为appendonly.aof
Rewrite机制
##AOF采用文件追加方式,文件会越来越大,为避免该情况,新增了重写机制,当aof文件大小超过设定的阈值,redis就会启动aof文件的内容压缩,只保留可以恢复的最小指令集,可以使用命令bgrewriteaof
No-appendfsync-on-rewrite ##重写时是否运用Appendsync,默认no即可,保证数据的安全性
Appendfsync everysec ##每秒异步记录数据,如果一秒内宕机,会有数据丢失。
Auto-aof-rewrite-min-size 64mb ##设置重写的基准值,默认64兆
Auto-aof-rewrite-percentage 100 ##设置重写的基准百分比
如果aof文件由于各种原因破环,可使用命令redis-check-aof --fix appendonly.aof来修复不满足aof语法规范的命令
free(查看内存) df-h(查看磁盘空间)
优势:
每秒异步记录数据,如果一秒内宕机,会有数据丢失。
劣势:
aof文件远大于rdb文件,运行效率低于rdb文件