rdb

All posts tagged rdb

Redis的RDB与AOF

Redis通过RDB与AOF两种方式来支持数据的持久化。

RDB以数据库快照snapshot,二进制的方式保存数据到rdb文件中,AOF则以文本协议的方式将写入的命令(包括参数)保存到AOF文件中。

这有点像Undo/Redo的两种做法,一种是记录每次的全部状态,一种是记录一个初始版本以及变化状态。

RDB拥有更快的重启,但是发生意外时RDB文件中保存的数据可能不是全新的,因此这段内数据可能全部丢失。

AOF则提供了三种保存模式:即不保存,每一秒钟保存一次,每执行一个命令保存一次。显然第三种模式安全性最高,但是性能最差。

至于RDB还是AOF具体哪种模式,还是要视业务的具体需求而定。目前通常的设计思路是利用Replication(见这里http://redis.io/topics/replication)对AOF和RDB做一些补充,即Master上RDB和AOF都不做以保证Master的读写性能,而Slave上则同时开启RDB和AOF来进行持久化。

参考:

http://redis.io/topics/persistence

http://redis.io/topics/replication