redis持久化机制的原理
一、两种实现redis持久化的机制,RDB模式和AOF模式
①RDB模式
1.有三种具体的实现方式,save,bgsave,修改redis.conf配置
2.save方式会占用redis的进程,在save期间redis不可以处理其他的命令会造成redis拥堵,会替换掉老的dump.rdb文件
3.bgsave会fork出redis的一个子进程,在后台异步进行快照操作,并不会造成redis的拥堵,会替换掉老的dump.rdb文件
4.自动同步,即修改redis.conf中的配置数据
eg:save:这里是用来配置触发 Redis的 RDB 持久化条件,也就是什么时候将内存中的数据保存到硬盘。比如“save m n”。表示m秒内数据集存在n次修改时,自动触发bgsave。
②AOF模式
1.将redis的写命令记录在AOF的文件中
2.AOF有三种机制
2.1 always:当redis数据发生变化时即同步
2.2 everysec : 每秒钟同步,无论数据有无更改
2.3 no:从不同步
RDB和AOF的优缺点
1.RDB优点:适合大数据集的回复,fork子进程不会造成进程拥堵
2.RDB缺点:RDB快照是一次全量备份,存储的是内存数据的二进制序列化形式,存储上非常紧凑。当进行快照持久化时,会开启一个子进程专门负责快照持久化,子进程会拥有父进程的内存数据,父进程修改内存子进程不会反应出来,所以在快照持久化期间修改的数据不会被保存,可能丢失数据
3.AOF优点:AOF每隔一秒同步一次数据,最多只会丢失1s钟的数据
4.AOF缺点:aof文件要比rdb文件要大