Redis AOF 持久化方式

2022-04-02 04:22:44 字數 3868 閱讀 4819

3 指定更新日誌條件

解說:

4 配置重寫觸發機制

解說:當aof檔案大小是上次rewrite後大小的一倍且檔案大於64m時觸發。一般都設定為3g,64m太小了。

隨著命令不斷寫入aof,檔案會越來越大,為了解決這個問題,redis引入了aof重寫機制壓縮檔案體積。aof檔案重

寫是將redis程序內的資料轉化為寫命令同步到新aof檔案的過程。簡單說就是將對同乙個資料的若干個條命令執行結

果轉化成最終結果資料對應的指令進行記錄。

aof重寫作用

aof重寫規則

程序內已超時的資料不再寫入檔案

忽略無效指令,重寫時使用程序內資料直接生成,這樣新的aof檔案只保留最終資料的寫入命令

如del key1、 hdel key2、srem key3、set key4 111、set key4 222等

對同一資料的多條寫命令合併為一條命令

如lpush list1 a、lpush list1 b、 lpush list1 c 可以轉化為:lpush list1 a b c。

為防止資料量過大造成客戶端緩衝區溢位,對list、set、hash、zset等型別,每條指令最多寫入64個元素

aof重寫觸發機制

觸發機制:當aof檔案大小是上次rewrite後大小的一倍且檔案大於64m時觸發。這裡的「一倍」和「64m」 可以通過配置檔案修改。

優點:資料的完整性和一致性更高

缺點:因為aof記錄的內容多,檔案會越來越大,資料恢復也會越來越慢。

[root@itdragon bin]# ./redis-server redis.conf

[root@itdragon bin]# ./redis-cli -h 127.0.0.1 -p 6379

127.0.0.1:6379> keys *(empty list or

set)

127.0.0.1:6379> set

keyaof valueaof

ok127.0.0.1:6379>flushall

ok127.0.0.1:6379>shutdown

not connected>quit

[root@itdragon bin]# ./redis-server redis.conf

[root@itdragon bin]# ./redis-cli -h 127.0.0.1 -p 6379

127.0.0.1:6379> keys *

1) "

keyaof

"127.0.0.1:6379>shutdown

not connected>quit

fjewofjwojfoewifjowejfwf

[root@itdragon bin]# ./redis-server redis.conf

[root@itdragon bin]# ./redis-cli -h 127.0.0.1 -p 6379

could not connect to redis at

127.0.0.1:6379

: connection refused

not connected>quit

'x 3e: expected prefix

'*', got:

'aof analyzed: size=92, ok_up_to=62, diff=30

this will shrink the aof

from

92 bytes, with 30 bytes, to 62

bytes

continue? [y/n]: y

successfully truncated aof

[root@itdragon bin]# ./redis-server redis.conf

[root@itdragon bin]# ./redis-cli -h 127.0.0.1 -p 6379

127.0.0.1:6379> keys *

1) "

keyaof

"補充點:aof 的校驗是通過 redis-check-aof 檔案,那麼rdb 的校驗是不是可以通過 redis-check-rdb 檔案呢???

redis 預設開啟rdb持久化方式,在指定的時間間隔內,執行指定次數的寫操作,則將記憶體中的資料寫入到磁碟中。

rdb 持久化適合大規模的資料恢復但它的資料一致性和完整性較差。

redis 需要手動開啟aof持久化方式,預設是每秒將寫操作日誌追加到aof檔案中。

aof 的資料完整性比rdb高,但記錄內容多了,會影響資料恢復的效率。

redis 針對 aof檔案大的問題,提供重寫的**機制。

若只打算用redis 做快取,可以關閉持久化。

若打算使用redis 的持久化。建議rdb和aof都開啟。其實rdb更適合做資料的備份,留一後手。aof出問題了,還有rdb。 對資料非常敏感,建議使用預設的aof持久化方案

轉 Redis AOF 持久化詳解

redis 是一種記憶體資料庫,將資料儲存在記憶體中,讀寫效率要比傳統的將資料儲存在磁碟上的資料庫要快很多。但是一旦程序退出,redis 的資料就會丟失。為了解決這個問題,redis 提供了 rdb 和 aof 兩種持久化方案,將記憶體中的資料儲存到磁碟中,避免資料丟失。rdb的介紹在這篇文章中 r...

Redis AOF持久化的實現

當 aof 持久化功能處於開啟狀態時,伺服器在執行完乙個寫命令之後,會以協議格式將被執行的寫命令追加到伺服器狀態的aof buf緩衝區的末尾 struct redisserver 舉個例子,如果客戶端向伺服器傳送以下命令 redis set key value ok那麼伺服器在執行這個 set 命令...

成為部落格專家 Redis AOF持久化設定

aof持久化,預設是關閉的,預設是開啟rdb持久化 開啟aof持久化機制之後,redis每次接收到一條寫命令,就會寫入日誌檔案中,當然是先寫入os cache的,然後每隔一定時間再fsync一下 而且即使aof和rdb都開啟了,redis重啟的時候,也是優先通過aof進行資料恢復的,因為aof資料比...