reids是一個key-value存儲系統,為了保證效率,緩存在內存中,但是redis會周期性的把更新的數據寫入磁盤或者把修改操作寫入追加的記錄文件,以保證數據的持久化。
所以:redis是一個支持持久化的內存數據庫,可以將內存中的數據同步到磁盤保證持久化。
Redis的持久化策略:2種
---------rdb:快照形式是直接把內存中的數據保存到一個dump文件中,定時保存,保存策略
---------aof:把所有的對redis的服務器進行修改的命令都存到一個文件里,命令的集合
rdb:
默認情況下,是快照rdb的持久化方式,將內存中的數據以快照的方式寫入二進制文件中,默認的文件名是dump.rdb
redis.conf配置:
save 900 1 900秒之內,如果超過1個key被修改,則發起快照保存;
save 300 10 300秒內,如果超過10個key被修改,則發起快照保存
save 60 10000 1分鍾之內,如果1萬個key被修改,則發起快照保存
這種方式不能完全保證數據持久化,因為是定時保存,所以當redis服務down掉,就會丟失一部分數據,而且數據量大,
寫操作多的情況下,會引起大量的磁盤IO操作,會影響性能。
所以,如果這兩種方式同時開啟,如果對數據進行恢復,不應該用rdb持久化方式對數據庫進行恢復。
AOF
使用aof做持久化,每一個寫命令都通過write函數追加到appendonly.aof中.
配置方式:啟動aof持久化的方式 (命令)
appendonly yes
兩種持久化策略,各有各的優缺點,依需求而定。
---------------------