慕課網視頻地址:http://www.imooc.com/video/14935
Redis的高性能是因爲它所有的數據都存儲在了內存中,爲了保證Redis在重啓後數據依然存在我們需要對內存中的數據進行持久化操作(持久化就是將內存的數據同步到硬盤中)。
Redis的兩種持久化方式
1:RDB:在制定的時間間隔內將內存中的數據集快照寫入到磁盤。
2:AOF:以日誌的形式記錄服務器所處理的每一個操作,在redis服務啓動之初讀取這個文件,之後去構建我們的數據庫,保證啓動後數據是完整的
持久化的使用方式:
1:單獨使用RDB持久化(默認支持,不需要配置)
優勢:採用這種方式,redis的數據庫就只包含一個文件,對於文件備份非常完美
可以將備份好的快照考走
性能最大化,啓動效率更高
缺點:如果享保證數據的高可用性,RDB將不是個好的選擇(30S向硬盤寫一次,但是服務器25S就宕機了)
RDB是通過子進程備份數據的,如果數據集較大的時候,可能會導致服務器停止幾百毫秒
RDB的配置:
redis下的redis.conf下
每900s(15分鐘)至少有1個Key發生變化,它會持久化一次
每300s(5分鐘)至少有10個key發生變化
每60s(1分鐘)有1W個key發生變化
這個是備份的數據文件名 dump.rdb
保存的路徑當前目錄 ./
2:單獨使用AOF
優勢:能夠帶來更高的數據安全性
(三種策略:1.每秒同步-異步完成一旦1S內宕機,則這1S內的操作無法保存;
2.每修改同步,視爲同步持久化,效率最低,但是最安全;
3:不同步)
對日誌操作寫入使用的是追加模式,所以說寫入的時候既是宕機,也不會影響之前的數據
如果日誌過大,redis自動啓動重寫機制
劣勢:文件大。運行效率低
配置:還是打開redis.conf
redis默認不啓動AOF方式,如果想使用AOF則將no改成yes
啓動之後就會產生appendonly.aof的文件
這個地方是同步策略的設置
# appendfsync always 每次修改同步
appendfsync everysec 每秒同步
# appendfsync no 不同步
#表示註釋,未啓動
修改配置文件重啓下redis
3:不持久化,通過配置禁用持久化
4:同時使用RDB和AOF