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數據持久化