Redis 分别提供了 RDB 和 AOF 两种持久化机制:
RDB 将数据库的快照(snapshot)以二进制的方式保存到磁盘中。
AOF 则以协议文本的方式,将所有对数据库进行过写入的命令(及其参数)记录到 AOF 文件,以此达到记录数据库状态的目的。
SAVE 直接调用 rdbSave
,阻塞 Redis 主进程,直到保存完成为止。在主进程阻塞期间,服务器不能处理客户端的任何请求。
BGSAVE 则 fork出一个子进程,子进程负责调用 rdbSave ,并在保存完成之后向主进程发送信号,通知保存已完成。因为 rdbSave
在子进程被调用,所以 Redis 服务器在 [BGSAVE](http://redis.readthedocs.org/en/latest/server/bgsave.html#bgsave) 执行期间仍然可以继续处理客户端的请求。
根据键的类型, 使用适当的写入命令来重现键的当前值, 这就是 AOF 重写的实现原理
AOF 文件通过保存所有修改数据库的命令来记录数据库的状态。
AOF 文件中的所有命令都以 Redis 通讯协议的格式保存。
不同的 AOF 保存模式对数据的安全性、以及 Redis 的性能有很大的影响。
AOF 重写的目的是用更小的体积来保存数据库状态,整个重写过程基本上不影响 Redis 主进程处理命令请求。
AOF 重写是一个有歧义的名字,实际的重写工作是针对数据库的当前值来进行的,程序既不读写、也不使用原有的 AOF 文件。
AOF 可以由用户手动触发,也可以由服务器自动触发。
RDB 将数据库的快照(snapshot)以二进制的方式保存到磁盘中。
AOF 则以协议文本的方式,将所有对数据库进行过写入的命令(及其参数)记录到 AOF 文件,以此达到记录数据库状态的目的。
SAVE 直接调用 rdbSave
,阻塞 Redis 主进程,直到保存完成为止。在主进程阻塞期间,服务器不能处理客户端的任何请求。
BGSAVE 则 fork出一个子进程,子进程负责调用 rdbSave ,并在保存完成之后向主进程发送信号,通知保存已完成。因为 rdbSave
在子进程被调用,所以 Redis 服务器在 [BGSAVE](http://redis.readthedocs.org/en/latest/server/bgsave.html#bgsave) 执行期间仍然可以继续处理客户端的请求。
根据键的类型, 使用适当的写入命令来重现键的当前值, 这就是 AOF 重写的实现原理
AOF 文件通过保存所有修改数据库的命令来记录数据库的状态。
AOF 文件中的所有命令都以 Redis 通讯协议的格式保存。
不同的 AOF 保存模式对数据的安全性、以及 Redis 的性能有很大的影响。
AOF 重写的目的是用更小的体积来保存数据库状态,整个重写过程基本上不影响 Redis 主进程处理命令请求。
AOF 重写是一个有歧义的名字,实际的重写工作是针对数据库的当前值来进行的,程序既不读写、也不使用原有的 AOF 文件。
AOF 可以由用户手动触发,也可以由服务器自动触发。