redis RDB和AOF两种持久化的区别
RDB | AOF | |
存储数据 |
保存键空间的所有键值对(包括过期字典中的数据),并以二进制形式保存,符合rdb文件规范,根据不同数据类型会有不同处理 |
保存redis服务器所执行的所有写命令来记录数据库状态,在写入之前命令存储在aof_buf缓冲区。 |
持久化时间选择 |
通过conf的save选项设置持久化行为(单位时间内的修改次数)。 |
通过conf的appendfsync选项设置持久化行为 |
数据还原 |
服务器载入rdb文件,阻塞线程,在载入完成之前不接受任何命令。 |
服务器创建不带网络连接的伪客户端,读取aof文件中的所有命令并执行(redis服务开启aof持久化在服务器启动时会选择aof文件恢复数据库状态) |
过期键 | 在写入或读取时会忽略过期键 | 不会忽略过期键,在键被惰性删除或定期删除时向aof文件追加一条删除命令 |
文件大小 | 随着存储数据量的变化而变化(根据不同数据类型有不同的数据压缩优化) | 随着执行命令的增加而增加(通过aof重写进行优化) |
执行命令 | SAVE和BGSAVE | -- |