redis:redis的持久化
redis:redis的持久化
小吴顶呱呱在redis中提供了俩种数据持久化的方式:1.RDB 2.AOF
1.RDB持久化
RDB全称Redis Database Backup file(redis 数据备份文件),也叫redis数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。当redis实例故障重启后,从磁盘读取快照文件,恢复数据。
1.主动备份方式:执行命令
2.修改配置文件redis.conf 开启备份
1.1RDB的执行原理
bgsave开始时会fork(克隆)主进程得到子进程,子进程共享主进程的内存数据。完成fork后读取内存数据并写入RDB文件。
因为所有的进程无法直接操作物理内存,所以由操作系统给每个进程分配一个虚拟内存,每个进程只能操作自己的虚拟内存,操作系统会维护一个虚拟内存到物理内存的映射关系表,称作页表。
如果此时子进程在写RDB文件的时候主进程得到用户的请求在修改物理内存数据,此时可能会出现一些脏数据,为了避免这种情况发生,fork底层采用了copy-on-write技术:
- 当主进程执行读操作时候,访问共享内存
- 当主进程执行写操作时候,则会拷贝一份数据,执行写操作
2.AOF持久化
AOF全称为Append Only File (追加文件)。Redis处理每一个写命令都会记录在AOF文件中,可以看做是命令日志文件。
修改redis.conf打开AOF持久化:
记录频率设置:
因为是记录命令。所以AOF文件会比RDB文件大得多,而且AOF会记录对同一个key的多次写操作,但是只有最后一次的写操作才有意义。通过bgrewriteaof命令,可以让AOF文件执行重写功能,用最少的命令达到相同功能。
对比
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果