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資料比...