小螞蟻學習Redis筆記(11)——Redis重要特性——持久化機制

持久化機制

Redis是一個支持持久化的內存數據庫,也就是說Redis須要常常將內存中的數據同步到硬盤來保證持久化。redis

Redis支持兩種持久化機制:

  1. snapshooting (快照)也是默認的方式。把數據作個備份。
  2. Append-only file(縮寫aof)的方式。將寫、改、刪保存到一個文件中去。
1. snapshotting

將內存中的數據以快照的方式寫到二進制文件中。默認名爲:dump.rdb。數據庫

能夠手動配置Redis在n秒內若是超過m個key被修改過,就自動作快照。如:
save 900 1 //意思是,若是在900秒以內超過1個key被修改過,則發起快照保存。
redis.conf配置文件默認爲:緩存

save 900 1
save 300 10
save 60 10000
2. aof方式

因爲快照方式是在必定間隔時間作一次的,因此若是Redis意外崩潰的話,就會丟失最後一次快照後的全部修改。
aof能夠比快照作到更好的持久化,是因爲在使用aof時,redis會將每個收到的寫命令都經過write函數追加到文件中,當Redis重啓時會從新執行文件中保存的寫命令,從而在內存中重建整個數據庫的內容。app

固然,因爲os會在內核中緩存write作的修改,因此可能不是當即寫到磁盤上。這樣aof方式的持久化也仍是有可能會丟失部分修改。能夠經過配置文件告訴Redis,咱們想要經過fsync函數強制os寫入到磁盤的時機。
修改配置文件:
appendonly yes //啓用aof持久化方式
下面有三個選項,分別是:
# appendfsync always //收到寫命令就馬上寫入磁盤,最慢,可是保證徹底的持久化。
appendfsync everysec //每秒鐘寫入磁盤一次,在性能和持久化方面作了很好的折中。
# appendfsync no //徹底依賴os,性能最好,持久化沒保證。
設置完畢以後,重啓Redis服務。能夠看到生成了一個新的文件: appendonly.aof函數

[root@myCentos redis]# ls /usr/local/redis/
appendonly.aof  bin  dump.rdb  etc

小結:snapshotting保存的是數據,而aof保存的是寫命令操做。性能

學PHP的小螞蟻 原創博客 http://my.oschina.net/woshixiaomayi/blog.net

相關文章
相關標籤/搜索