redis是一個(gè)支持持久化的內(nèi)存數(shù)據(jù)庫,也就是說redis需要經(jīng)常將內(nèi)存中的數(shù)據(jù)同步到硬盤來保證持久化。redis支持兩種持久化方式:
1、snapshotting(快照)也是默認(rèn)方式。將內(nèi)存中的數(shù)據(jù)以快照的方式寫入到文件。默認(rèn)的文件名是dump.rdb。
[root@D2-LZY245 redis-4.0.1]# grep ^save redis.conf
save 900 1
save 300 10
save 60 10000
2、append-only file(aof)的方式。由于快照方式是在一定間隔時(shí)間做一次,所以如果redis意外down掉的話,就會(huì)丟失最后一次快照后的所有修改。aof比快照方式有更好的持久性,是由于在使用aof時(shí),redis會(huì)將每一個(gè)收到的寫命令都通過write函數(shù)追加到文件中,當(dāng)redis重啟時(shí)會(huì)通過重新執(zhí)行文件中保存的寫命令來在內(nèi)存中重建整個(gè)數(shù)據(jù)庫的內(nèi)容。
由于os會(huì)在內(nèi)核中緩存write做的修改,所有可能不是立即寫到磁盤上。這樣aof方式的持久化也還是有可能會(huì)丟失部分修改??梢酝ㄟ^配置文件告訴redis想要通過fsync函數(shù)強(qiáng)制OS寫入到磁盤的時(shí)機(jī)。
# The name of the append only file (default: "appendonly.aof")
appendfilename "appendonly.aof"
# always: fsync after every write to the append only log. Slow, Safest.
# appendfsync always
appendfsync everysec
# appendfsync no
新聞標(biāo)題:Redis之持久化
文章鏈接:
http://weahome.cn/article/jcpphp.html