1、redis持久化,來自官方說明
一般來說, 如果想達到足以媲美 PostgreSQL 的數(shù)據安全性, 你應該同時使用兩種持久化功能。
如果你非常關心你的數(shù)據, 但仍然可以承受數(shù)分鐘以內的數(shù)據丟失, 那么你可以只使用 RDB 持久化。
有很多用戶都只使用 AOF 持久化, 但我們并不推薦這種方式: 因為定時生成 RDB 快照(snapshot)非常便于進行數(shù)據庫備份, 并且 RDB 恢復數(shù)據集的速度也要比 AOF 恢復的速度要快, 除此之外, 使用 RDB 還可以避免之前提到的 AOF 程序的 bug 。
Note: 因為以上提到的種種原因, 未來我們可能會將 AOF 和 RDB 整合成單個持久化模型。 (這是一個長期計劃。)
接下來的幾個小節(jié)將介紹 RDB 和 AOF 的更多細節(jié)。
在默認情況下, Redis 將數(shù)據庫快照保存在名字為 dump.rdb
的二進制文件中。你可以對 Redis 進行設置, 讓它在“ N 秒內數(shù)據集至少有 M 個改動”這一條件被滿足時, 自動保存一次數(shù)據集。你也可以通過調用 SAVE或者 BGSAVE , 手動讓 Redis 進行數(shù)據集保存操作。
比如說, 以下設置會讓 Redis 在滿足“ 60 秒內有至少有 1000 個鍵被改動”這一條件時, 自動保存一次數(shù)據集:
save 60 1000
這種持久化方式被稱為快照 snapshotting.
當 Redis 需要保存 dump.rdb 文件時, 服務器執(zhí)行以下操作:
Redis 調用forks. 同時擁有父進程和子進程。
子進程將數(shù)據集寫入到一個臨時 RDB 文件中。
當子進程完成對新 RDB 文件的寫入時,Redis 用新 RDB 文件替換原來的 RDB 文件,并刪除舊的 RDB 文件。
這種工作方式使得 Redis 可以從寫時復制(copy-on-write)機制中獲益。
快照功能并不是非常耐久(durable): 如果 Redis 因為某些原因而造成故障停機, 那么服務器將丟失最近寫入、且仍未保存到快照中的那些數(shù)據。
從 1.1 版本開始, Redis 增加了一種完全耐久的持久化方式: AOF 持久化。
你可以在配置文件中打開AOF方式:
appendonly yes
從現(xiàn)在開始, 每當 Redis 執(zhí)行一個改變數(shù)據集的命令時(比如 SET), 這個命令就會被追加到 AOF 文件的末尾。這樣的話, 當 Redis 重新啟時, 程序就可以通過重新執(zhí)行 AOF 文件中的命令來達到重建數(shù)據集的目的。
2、問題MISCONF Redis is configured to save RDB snapshots
127.0.0.1:6379> set k1 "nob"
(error) MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error.
出現(xiàn)如上錯誤是因為磁盤無法寫入,緣由:應該是之前強制停止redis快照導致
我的解囧,重啟機器沒問題了,哈哈哈,就是因為幾次強制停止造成的
有人的解囧如下
如果是內存問題應該如下辦法,具體查看日志,
請在/etc/sysctl.conf 添加一項 'vm.overcommit_memory = 1' ,然后重啟(或者運行命令'sysctl vm.overcommit_memory=1' )使其生效。
[參考文獻]
1、http://www.redis.cn/topics/persistence.html 官方文檔對于持久化的說明
2、http://www.linuxidc.com/Linux/2012-07/66079.htm 從Redis的數(shù)據丟失說起
3、http://www.redicecn.com/html/Linux/20131125/468.html MISCONF Redis is configured to save RDB 內存問題引起
4、http://blog.csdn.net/chenggong2dm/article/details/17325241 磁盤滿了也報錯 MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk