1. 程式人生 > >RDB數據持久化

RDB數據持久化

RDB

持久化原理:

RDB是snapshot快照<二進制文件>存儲,是默認的持久化方式。

RDB會按照一定的策略,周期性的將數據保存到磁盤。(下個周期為到來時故障,會丟數據)

借助fork命令的copy on write機制,在快照生成時,將當前進程fork出一個子進程,

然後再子進程中循環所有數據,將數據寫成RDB文件。

優點:使用單獨子進程來進行持久化,主進程不會進行任何IO操作,保證了redis的高性能。

缺點:RDB是按照周期性策略進行持久化,

如果持久化之間redis發生故障,會發生數據丟失,

所以這種方式適合數據要求不嚴謹的環境。

配置文件相關參數:

dbfilename dump.rdb #指定持久化數據文件名

dir /usr/local/redis-3.0.6-6379/ #默認dir ./

save 900 1

save 300 10

save 60 10000

持久化過程:

當滿足save的條件時,比如更改了1個key,900s後會將數據寫入臨時文件,

持久化完成後將臨時文件替換舊的dump.rdb。

使用RDB恢復數據:(需要時間)

重啟redis的server即可完成(啟動redis的server時會從dump.rdb中先同步數據)

使用命令進行持久化save存儲:

./redis-cli -h ip -p port save #前臺進行存儲

./redis-cli -h ip -p port bgsave #後臺進行存儲


RDB數據持久化