推荐一篇讲的十分清晰的文章https://blog.youkuaiyun.com/bible_reader/article/details/84138665
redis持久化
主要有两种RDB和AOF两种方式,redis默认使用的是RDB。
RDB也称为快照方式,是在满足触发条件时,一次性存储redis中的所有数据,数据是存储在dump.rdb文件中,采取的方式时fork一个子线程来新建一个当前redis的快照文件dump.rdb,当数据备份完成,删除旧的dump.rdb文件。
//触发持久化的条件
save 900 1 900秒有一个更新
save 300 10 300秒有十个更新
save 60 10000 60秒有10000个更新
//存储快照的文件
dbfilename dump.rdb
但是因为RDB在服务器宕机时可能会丢失部分数据,因为只有满足触发条件才会持久化,所以redis还提供了另外一种持久化方式AOF。
AOF默认是不开启的,可以在配置中打开,aof是保存redis的操作指令,aof文件是有最大容量限制的,如果超过最大容量,redis就会fork一个子线程来重写aof文件,就是精简旧的aof文件到新的文件中,这个过程主线程还是可以进行读写,写到旧的aof文件中,当重写完毕后,会删除旧的aof文件。
//默认是no,改为yes开启
appendonly yes
//这是aof的策略
# appendfsync always 总是持久化
appendfsync everysec 每秒持久化
# appendfsync no 不持久化
//存储操作指令的文件
appendfilename "appendonly.aof"
一般来讲,线上环境是两种方式都开启,rdb用来备份大量的数据,aof用来备份少部分rdb没有备份成功的数据。