Redis的持久化方式有RDB和AOF两种
RDB:(Redis数据备份文件,也叫Redis数据快照)
简单的来说就是把内存中的数据记录在磁盘中,当Redis实例故障重启时,从磁盘读取快照文件,恢复数据
手动实现RDB:
–save:通过Redis的主进程执行RDB,会阻塞所有指令执行
–bgsave:开启子进程(fork主线程的方式),执行RDB,避免主线程受到影响|
—fork过程:
拷贝页表,子进程访问主进程内存中的数据,完成fork后读取内存数据写入RDB文件
copy-on-write技术: 当主进程执行读操作的时候,访问共享内存,当主进程执行写操作的时候,会拷贝形成一份数据副本,执行写操作

自动触发RDB的机制:
在redis.conf配置文件中进行设置触发机制
save 900 1
save 300 10
save 60 10000

AOF持久化:
Append Only File(追加文件),Redis每处理一个写命令就会把它记录进AOF文件,可以看做是命令的日志文件(默认关闭)
配置项:
appendfsync always :立即写入AOF文件中,操作是主进程去做,性能差,数据安全性高,基本上不会存在数据丢失的现象
appendfsync everysec : 写命令完先放入ADF缓冲区,每隔一秒钟将缓冲区数据写到AOF文件中一次,默认的方案. 牺牲一些可靠性,可能会丢一秒钟的数据
appendfdsync no 写命令完先放入ADF缓冲区,由操作系统决定何时将缓冲器内容写进磁盘(安全性不高,性能更好,意义不大
AOF重写:

因为AOF这样的机制,所以说文件是大量的,因为每次的数据操作都会被记录进来,这样的话会记录大量的无用数据,比如说对一个值的重复修改,前面的修改记录是没有用的 使用bgrewriteaof命令对AOF进行重写,可以极大的缩小AOF文件的体积
自动触发AOF重写机制,在配置文件中有如下配置:
auto-aof-rewrite-percentage 100 比上次文件文件大小增长多少百分比会自动触发
auto-aof-rewrite-min-size 64mb AOF提价最小多大以上才会触发重写
对比一下RDB和AOF
