RDB与AOF异同比较
Last updated
Was this helpful?
Last updated
Was this helpful?
在版本号大于等于 2.4 的 Redis 中,执行的过程中, 不可以执行。 反过来说, 在执行的过程中, 也不可以执行。
这可以防止两个 Redis 后台进程同时对磁盘进行大量的 I/O 操作。
如果正在执行, 并且用户显示地调用命令, 那么服务器将向用户回复一个OK状态, 并告知用户,已经被预定执行: 一旦执行完毕,就会正式开始。
当 Redis 启动时, 如果 RDB 持久化和 AOF 持久化都被打开了, 那么程序会优先使用 AOF 文件来恢复数据集, 因为 AOF 文件所保存的数据通常是最完整的。
一般来说, 如果想达到足以媲美 PostgreSQL 的数据安全性, 你应该同时使用两种持久化功能。
如果你非常关心你的数据, 但仍然可以承受数分钟以内的数据丢失, 那么你可以只使用 RDB 持久化。
有很多用户都只使用 AOF 持久化, 但我们并不推荐这种方式: 因为定时生成 RDB 快照(snapshot)非常便于进行数据库备份, 并且 RDB 恢复数据集的速度也要比 AOF 恢复的速度要快, 除此之外, 使用 RDB 还可以避免之前提到的 AOF 程序的 bug 。
因为以上提到的种种原因, 未来我们可能会将 AOF 和 RDB 整合成单个持久化模型。 (这是一个长期计划。)
接下来的几个小节将介绍 RDB 和 AOF 的更多细节。
在 Redis 2.2 或以上版本,可以在不重启的情况下,从 RDB 切换到 AOF :
为最新的dump.rdb文件创建一个备份。
将备份放到一个安全的地方。
执行以下两条命令:
确保命令执行之后,数据库的键的数量没有改变。
确保写命令会被正确地追加到 AOF 文件的末尾。
步骤 3 执行的第一条命令开启了 AOF 功能: Redis 会阻塞直到初始 AOF 文件创建完成为止, 之后 Redis 会继续处理命令请求, 并开始将写入命令追加到 AOF 文件末尾。
步骤 3 执行的第二条命令用于关闭 RDB 功能。 这一步是可选的, 如果你愿意的话, 也可以同时使用 RDB 和 AOF 这两种持久化功能。
别忘了在redis.conf中打开 AOF 功能! 否则的话, 服务器重启之后, 之前通过CONFIGSET设置的配置就会被遗忘, 程序会按原来的配置来启动服务器。