Redis持久化有两种方式: rdb(redis database)和aof(append of file)
RDB:在指定时间间隔内,将内存中的数据作为一个快照文件(snapshot)写入到磁盘,读取的时候也是直接读取snapshot文件到内存中
①持久化过程:redis单独创建(fork)一个进程来持久化,会先将数据写入临时文件中,待上次持久化结束后,会将该临时文件替换上次持久化文件,比aof高效,但是最后一次数据可能会丢失
②Fork:在linux中,fork()会产生一个跟主进程一样的子进程,出于效率考虑,主进程和子进程会公用一段物理内存,当发生改变的时候,才会把主进程“”写时复制”一份给子进程
③Redis备份的文件:在redis.conf中设置,dbfilename默认为:dump.rdb
④ Rdb保存策略:
900s 1 file change
300s 10file change
60s 10000file change
⑤Rdb的备份:
config get dir 得到备份的文件夹
复制备份文件
⑥Rdb恢复:
关闭redis
将备份文件复制到工作目录下
启动redis,自动加载
AOF : 以日志形式记录每个写操作,启动时通过日志恢复操作
开启AOF:默认不开启,进入redis.conf找到appendonly yes打开
修复AOF:redis-check-aof –fix appendonly.aof
同步频率:每秒记录一次,如果宕机该秒记可能失效
Rewrite:bgrewriteaof 因为日志是追加方式,文件会越来越大,当超过了设置的阈值时,日志文件会压缩,保留仅可以恢复的日志