1. 什么是持久化?
持久化把内存中的数据存储到硬盘中,有效避免进程退出造成的数据丢失。
2. 持久化的方式
2.1 RDB Redis DataBase
- 功能核心函数, rdbSave rdbLoad
- 把当前进程的快照数据保存到硬盘中
2.1.1 优点
- 代表Redis某个时间点上的数据快照。
- 用户备份,全量复制
- Redis 加载RDB恢复数据远远快于AOF
2.1.2 缺点
- 无法做到实时持久化,秒级持久化
- 二进制格式,存在兼容问题
2.2 AOF Append-only file
- 核心函数 flushAppendOnlyFile
- 每当执行服务器任务或函数时,flushAppendOnlyFile 都会被调用。
- WRITE: 根据条件,将aof_buf中的缓存写入AOF文件
- SAVE: 根据条件,调用fsync fdatasync 命令,把AOF文件保存到磁盘中
- 存储结构:内容是Redis通讯协议格式的命令文本存储。
2.3 AOF 和 RDB对比
- AOF 比 RDB 更新频率更高,优先使用AOF还原数据
- AOF 比 RDB更安全,更大
- RDB性能比AOF好
- 优先加载AOF