redis的持久化
在redis中已經(jīng)提供了兩種持久化的方案
RDB: redis提供的一種基于快照機(jī)制實(shí)現(xiàn)的持久化方案, 而快照就類似于照相機(jī), 會將一個服務(wù)器某個時刻的一個狀態(tài)整體保存下來, 快照文件一般都非常的小,只有幾kb左右
優(yōu)點(diǎn): 由于持久化的文件非常小, 適合于做災(zāi)難恢復(fù)
缺點(diǎn): 由于redis中持久化的時機(jī)問題, 會存在數(shù)據(jù)丟失的問題
AOF: redis提供的一種基于日志機(jī)制實(shí)現(xiàn)的持久化方案, 會將用戶操作的所有的命令整體的記錄下來保存到日志文件中,一般文件都比較龐大
優(yōu)點(diǎn): AOF機(jī)制可以讓將用戶所有的命令都記錄下來, 顧其數(shù)據(jù)保存的比較完整, 不容易丟失
缺點(diǎn): 持久化的文件比較龐大, 不利于災(zāi)難恢復(fù)
RDB保存機(jī)制: redis默認(rèn)是開啟RDB機(jī)制
save 900 1 : 在900秒之內(nèi),如果有一個數(shù)據(jù)進(jìn)行修改,就會執(zhí)行一下保存
save 300 10? : 在300秒之內(nèi), 如果有10個以上的數(shù)據(jù)被修改, 就會執(zhí)行一下保存
save 60 10000 : 在60秒之內(nèi), 如果有10000個以上的數(shù)據(jù)被修改. 就會執(zhí)行一下保存
當(dāng)服務(wù)器宕機(jī), 最大丟失數(shù)據(jù)量為在不到5分鐘的時間里丟掉9999個數(shù)據(jù)
一般情況下redis的不會出現(xiàn)宕機(jī)的現(xiàn)象, 除非redis中的數(shù)據(jù)將內(nèi)存撐爆了, 但這個現(xiàn)象在大公司是不會出現(xiàn)的
AOF的保存機(jī)制:redis默認(rèn)不開啟
如何開啟AOF:
打開redis的配置文件,修改下列兩個參數(shù)即可
appendonly yes //默認(rèn)此項(xiàng)是no,沒有啟動AOF機(jī)制
appendfsync everysec? //appendfsync的取值: [always everysec no]
always: 總是, 只要有新的命令執(zhí)行, 就將其保存到文件中
優(yōu)點(diǎn): 數(shù)據(jù)保存最完整, 幾乎不會丟掉數(shù)據(jù)
缺點(diǎn): 大大降低了redis的性能
everysec: 每秒鐘執(zhí)行一次保存
此種保存不會大幅度的降低redis的性能,但是會丟失最大1s的數(shù)據(jù)
no: 不執(zhí)行保存, 由操作系統(tǒng)自動調(diào)用保存(linux一般30分鐘刷新一次內(nèi)存)
一般不使用
redis的主從復(fù)制架構(gòu)
主節(jié)點(diǎn)可以讀寫,從節(jié)點(diǎn)只能讀不能寫
redis當(dāng)中的sentinel架構(gòu)
類似zookeeper,當(dāng)主節(jié)點(diǎn)掛掉后可以進(jìn)行選舉