Redis数据持久化

来源:互联网 发布:vb中tab(5)什么意思 编辑:程序博客网 时间:2024/06/03 14:52
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 可以由用户手动触发,也可以由服务器自动触发。