當使用redis儲存非臨時資料時,一般需要開啟aof持久化來降低程序中止導致的資料丟失。aof可以將redis執行的每一條命令追加到硬碟檔案中,這一過程會降低redis的效能,但是大部分情況下,這個影響是可以接受的,另外使用較快的硬碟可以aof的效能。
開啟aof
aof實現
aof檔案的內容是redis客戶端向redis傳送的原始通訊協議的內容,隨著執行命令越來越多,aof檔案的大小也越來越大,即使記憶體中的資料沒有多少,故我們希望redis自動優化aof檔案,每當達到一定條件時,redis就會重寫aof檔案,這個條件可以在配置檔案中設定:
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
auto-aof-rewrite-percentage這個引數是指當前的aof檔案大小超過上一次重寫的aof檔案大小的百分之多少時會再次進行重寫, 如果之前沒有進行重寫,則以啟動時的aof檔案大小為依據。auto-aof-rewrite-min-size引數限制了允許重寫最小aof檔案的大小
除了自動重寫外,還有bgrewriteaof命令手動執行aof重寫。重寫的過程只和記憶體的資料有關,和之前的aof檔案無關,這和rdb很相似,但二者的檔案格式完全不同。
在啟動redis會逐個執行aof檔案中的命令來將硬碟的資料載入到記憶體中,載入的速度相對rdb較慢些。
同步磁碟資料
預設採取everysec規則,即每秒執行一次同步操作。always表示每次執行都執行同步,這是最安全也是最慢的方式。no表示從不主動同步,完全交由作業系統來做(即妹30秒一次),這是最快但是最不安全的方式。
redis允許同時開啟aof和rdb方式,即保證資料的安全,又進行備份等操作十分容易。此時重啟redis後redis會使用aof檔案來恢復資料,因為aof方式的持久化可能丟失的資料更少。
redis的aof方式持久化
redis提供兩種持久化方式,rdb和aof 與rdb不同,aof可以完整的記錄整個資料庫,而不像rdb只是資料庫某一時刻的快照 那麼aof模式為什麼可以完整的記錄整個資料庫呢?原理 在aof模式下,redis會把執行過的每一條更新命令記錄下來,儲存到aof檔案中 當redis需要恢復資料庫資料時,...
redis持久化 AOF持久化
1.aof持久化原理 aof持久化會將被執行的寫命令寫到aof檔案的末尾。在恢復的時候,redis只要從頭到尾重新執行一次aof檔案包含的所有寫命令 2.配置選項 固態硬碟禁用always選項,在某些情況頻繁讀寫會大大降低固態硬碟的壽命 4.aof檔案的重寫和壓縮 aof檔案裡面記錄了所有的命令而不...
09 Redis持久化 AOF方式
aof簡述 redis每次接受到一條改變資料的命令時,它會把該命令寫到乙個aof檔案中 只記錄寫操作,不記錄讀操作 當redis啟動時,它通過執行aof檔案中的所有命令來恢復資料。aof 當使用redis儲存非臨時資料時,一般需要開啟aof持久化來降低程序終止導致的資料丟失。aof可以將redis執...