Redis 持久化方式 AOF与RDB简述
1. 持久化基本流程:
(1)客户端向服务端发送写的操作 (数据在客户端的内存中)
(2)服务端接收到写请求的数据 (数据在服务端的内存中)
(3)服务端调用write这个系统调用,将数据往磁盘上写 (数据在系统内存的缓冲区中)
(4)操作系统将缓冲区中的数据转移到磁盘控制器上 (数据在磁盘缓存中)
(5)磁盘控制器将数据写到磁盘的物理介质中 (数据真正落到磁盘上)
2. redis持久化方式 RDB & AOF
2.1 默认持久化方式 RDB:
定义: 一定时间间隔内,将内存中的数据集以快照的形式持久化到磁盘中(二进制文件, 默认文件名dump.rdb)
触发机制: save(执行期间会阻塞redis其他命令)、bgsave(快照的同时可以相应客户端请求,阻塞只存在fork阶段)、自动触发(在redis.conf中配置持久化配置)
2.2 AOF:
定义:将每一个写的命令追加到一个日志文件中
重写原理:日志文件会越来越大,redis提供了bgrewriteaof命令,将内存中的数据以命令的形式保存到临时文件中,同时fork一个新的进程来重写文件
触发机制:每修改同步always(完整性好、性能差)、每秒同步everysec(有可能丢失数据,一般采用这种)、不同步no(从不同步)
2.3 aof 和 rdb的比较
转:https://baijiahao.baidu.com/s?id=1654694618189745916&wfr=spider&for=pc