持久化
AOF
Redis 每执行一条写操作命令,就把该命令以追加的方式写入到一个文件里,然后重启 Redis 的时候,先去读取这个文件里的命令,并且执行它。
特点:
- 先执行写操作命令,再将命令记录到AOF日志中。
写回策略
写回策略 | 写回时机 | 优点 | 缺点 |
---|---|---|---|
Always | 同步写回 | 可靠性高、最大程度保证数据不丢失 | 每个写命令都要写回硬盘,性能开销大 |
Everysec | 每秒写回 | 性能适中 | 宕机时丢失1秒内的数据 |
No | 由操作系统控制写回 | 性能好 | 宕机时丢失的数据可能会很多 |
AOF过大时的策略
当 AOF 文件的大小超过所设定的阈值后,Redis 就会启用 AOF 重写机制,来压缩 AOF 文件。
- 只记录最新的键值对
RDB
快照机制,把内存中所有数据记录到磁盘中,
执行bgsave时通过fork()创建子进程进行,同时子进程复制父进程的页表,所以读是不会阻塞子进程的。
针对写操作,被修改的数据会复制一份副本,然后bgsave子进程会把该副本数据写入RDB文件,在这个过程中,主线程仍然可以直接修改原来的数据。
两者对比
- AOF记录指令,RDB记录数据
- AOF优点是丢失数据少,但是数据恢复不快
- RDB优点是数据恢复速度快,但是快照频率不好把握。
混合持久化
AOF 文件的前半部分是 RDB 格式的全量数据,后半部分是 AOF 格式的增量数据。
参考
https://xiaolincoding.com/redis/storage/aof.html#aof-%E6%97%A5%E5%BF%97
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.