方式 | 相似 |
---|---|
RDB | 快照 |
AOF | 寫日誌,把新的記錄添加到末尾 |
其實RDB的原理就是相似於建立快照。redis
save
save命令是同步的,對於特別大的數據和訪問量大的網站都會發生阻塞安全
bgsave
bgsave命令是異步的,因此不會形成命令阻塞,可是由於該命令會額外的建立一個進程的子進程,因此會產生必定量的開銷app
save 900 1
save 300 10
save 60 10000
例如:在900秒內有一次改變就發生save命令異步
建議的配置性能
dbfilename
#二進制文件(快照)的名字
dir
#二進制文件存放的位置
stop-write-on-bgsave-error
#bgsave失敗,是否中止寫入
rdbcompression
#是否使用壓縮格式
rdbchecksum
#對二進制文件進行校驗
文件策略:存在老的RDB文件,新的就會替換老的網站
缺點:耗時,耗性能,不可控,丟失數據spa
相似於咱們寫日誌,把操做的每一條命令行都記錄到日誌文件中命令行
命令 | always | everysec | no |
---|---|---|---|
優勢 | 不丟失數據 | 每一秒執行一個同步 | 不用管 |
缺點 | IO開銷大 | 有可能丟失一秒的數據 | 不可控 |
由於在咱們實際的使用中,有不少的命令是重複的,多餘的或者是過時的,例如set hello word
, set hello Peter
,實際上只有後句命令纔有效,而重寫就是隻記錄了後面的那一句話。日誌
相似於RDB中的bgsave命令code
其實也是在內部調用bgrewriteof
配置名 | 含義 |
---|---|
auto_aof_rewrite_min_size | AOF文件重寫須要的尺寸 |
auto_aof_rewrite_percentage | AOF文件增加率 |
AOF的統計
統計名 | 含義 |
---|---|
aof_current_size | AOF當前的尺寸(單位:字節) |
aof_base_size | AOF上次啓動和重寫的尺寸(單位:字節) |
經過配置啓動重寫的條件
注意:3-1:當AOF文件重寫的過程當中,新的數據也會寫入到平常的AOF文件中。5-2則是在AOF文件重寫的時間段期間有新的命令傳進來也會被重寫進當前正在重寫的AOF文件中。(語文水平有限,哈哈,但願能理解)
appendonly yes
#使用AOF必定要開啓配置
appendfilename "appendonly-${port}.aof"
#AOF文件的名稱
appendfsync everysec
#AOF文件的策略
dir /
#存放的地址
no_appendfsync_on_rewrite yes
#這個配置就是說明在AOF重寫的過程當中不進行平常的AOF文件寫入
auto_aof_rewrite_percentage 100
auto_aof_rewrite_min_size 64mb
命令 | RDB | AOF |
---|---|---|
啓動優先級 | 低 | 高 |
體積 | 小 | 大 |
恢復速度 | 快 | 慢 |
數據安全性 | 丟數據 | 根據策略決定 |
輕重 | 重 | 輕 |