Redis运维和开发学习笔记(2) redis持久化
Redis運(yùn)維和開發(fā)學(xué)習(xí)筆記(2) redis持久化
文章目錄
- Redis運(yùn)維和開發(fā)學(xué)習(xí)筆記(2) redis持久化
- 持久化
- 持久化方式一:RDB
- 觸發(fā)~~的三種~~方式
- 1. save命令
- 2. bgsave
- 配置
- 觸發(fā)機(jī)制
- RDB 總結(jié)
- 持久化方式二:AOF
- AOF的三種策略
- 三種策略的優(yōu)缺點(diǎn)
- AOF重寫機(jī)制
持久化
-
redis將所有數(shù)據(jù)保存在內(nèi)存中,對(duì)數(shù)據(jù)的更新異步地保存在磁盤上
- 快照
- MySQL Dump
- Redis RDB
- 寫日志
- MySQL Binlog
- Hbase HLog
- Redis AOF
- 快照
-
RDB存在的問題
- 耗時(shí),耗性能
- 丟失數(shù)據(jù)
持久化方式一:RDB
RDB是Redis用來進(jìn)行持久化的一種方式,是把當(dāng)前內(nèi)存中的數(shù)據(jù)集快照寫入磁盤,也就是 Snapshot 快照(數(shù)據(jù)庫中所有鍵值對(duì)數(shù)據(jù))。恢復(fù)時(shí)是將快照文件直接讀到內(nèi)存里。
調(diào)用forks 生成一個(gè)子進(jìn)程 子進(jìn)程復(fù)制數(shù)據(jù)集到一個(gè)臨時(shí)的rdb文件中 當(dāng)子進(jìn)程完成對(duì)數(shù)據(jù)集的復(fù)制后,redis會(huì)用新的rdb文件,并刪除舊得rdb文件
觸發(fā)的三種方式
1. save命令
- 過程
client->redis->創(chuàng)建RDB文件(二進(jìn)制)
2. bgsave
-
過程
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-qEl1FSOy-1572053410723)(media/15637201103316/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202019-07-21%2022.56.06.png)] -
兩者對(duì)比
| 命令 | save | bgsave |
save與sbgsave
| — | — | — |
| IO類型 | 同步 | 異步 |
| 阻塞? | 是 | 是(阻塞發(fā)生在fork) |
| 復(fù)雜度 | O(n) | O(n) |
| 優(yōu)點(diǎn) | 不消耗額外的內(nèi)存 | 不阻塞客戶端命令 |
| 缺點(diǎn) | 阻塞客戶端命令 | fork消耗內(nèi)存 |
配置
save 900 1
save 300 10
save 60 10000
dbfilename dump.rdb
dir ./ (設(shè)置路徑)
stop-writes-on-bgsave-error yes(如果bgsave發(fā)生錯(cuò)誤就停止寫入)
rdbcompression yes(采用壓縮格式)
rdbchecksum yes(采用校驗(yàn)和)
觸發(fā)機(jī)制
RDB 總結(jié)
持久化方式二:AOF
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-Tz5XGcNh-1572053410724)(media/15637201103316/%E5%9B%BE%E7%89%87%201.png)]
| 時(shí)間戳 | save |
| — | — |
| T1 | 執(zhí)行多條命令 |
| T2 | 滿足RDB條件自動(dòng)創(chuàng)建 |
| T3 | 再次執(zhí)行多條寫命令 |
| T4 | 宕機(jī) |
| | 數(shù)據(jù)丟失 |
寫一條命令,就在AOF增加一條命令。當(dāng)redis宕機(jī),就是用AOF對(duì)數(shù)據(jù)進(jìn)行完整恢復(fù)。
AOF的三種策略
- always
redis執(zhí)行寫命令,是將命令卸載緩沖區(qū),每條命令fsycn到硬盤。 - everysec
redis執(zhí)行寫命令,是將命令卸載緩沖區(qū),每秒把命令fsycn到硬盤。 - no
redis執(zhí)行寫命令,是將命令卸載緩沖區(qū),由操作系統(tǒng)判斷把命令fsycn到硬盤。
三種策略的優(yōu)缺點(diǎn)
| 優(yōu)點(diǎn) | 不丟失數(shù)據(jù) | 每秒一次Sync丟1秒數(shù)據(jù) | 不用管 |
| 缺點(diǎn) | 1O開銷較大,一般的sata盤只有幾百TPS | 丟1秒數(shù)據(jù) | 不可控 |
AOF重寫機(jī)制
| set hello world | set hello hehe |
| set hello jave | |
| set hello hehe |
減少磁盤占用量,加快恢復(fù)速度
-
兩種方式
bgrewriteaof(fork子進(jìn)程,完成重寫)
AOF重寫配置 -
配置
| 配置名 | 含義 |
| — | — |
| Auto-aof-rewrite-min-size | AOF文件重寫需要的尺寸 |
| Auto-aof-rewrite-percentage | AOF增長率 | -
統(tǒng)計(jì)
| 統(tǒng)計(jì)名 | 含義 |
| — | — |
| aof_current_size | AOF 當(dāng)前尺寸 |
| aof_base_size | AOF上次啟動(dòng)和重寫的尺寸 | -
自動(dòng)觸發(fā)機(jī)制
aof_current_size > Auto-aof-rewrite-min-size
(aof_current_size - aof_base_size)/aof_base_size > Auto-aof-rewrite-percentage -
AOF重寫流程
總結(jié)
以上是生活随笔為你收集整理的Redis运维和开发学习笔记(2) redis持久化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 成都大熊猫繁育研究基地能带婴儿推车
- 下一篇: Redis运维和开发学习笔记(4) Re