為什么要持久化犀概?持久化不會(huì)降低性能嗎姻灶?
持久化主要是為了故障恢復(fù)铛绰。
會(huì)降低一定的性能产喉,但是為了故障恢復(fù)曾沈,可以接受的犧牲。
持久化: 可以將持久化的文件備份到云服務(wù)器塞俱。
持久化的兩種方式。
1 AOF
每次有命令(寫命令)的時(shí)候罐旗,會(huì)追加到1個(gè)日志文件里面去唯蝶。
會(huì)先寫到linux的os catch,里面去鼓蜒, 然后到一定的時(shí)間征字,才會(huì)寫到硬盤文件去。
Redis可以調(diào)用操作系統(tǒng)的命令柔纵,強(qiáng)制將os catch寫到硬盤里面去。
只有1個(gè)AOF文件或详,文件會(huì)變得越來(lái)越大郭计。 隨著增長(zhǎng),會(huì)生成新的AOF文件昭伸。
這個(gè)過(guò)程是: 文件變得越來(lái)越大的時(shí)候,Redis會(huì)執(zhí)行AOF rewrite操作选调,這個(gè)操作,會(huì)基于當(dāng)前的內(nèi)存數(shù)據(jù)哮洽,構(gòu)造一個(gè)比較小的AOF文件弦聂,然后將舊的大的AOF文件刪除。
恢復(fù)過(guò)程:執(zhí)行文件所有的指令莺葫。
1秒鐘會(huì)強(qiáng)制寫入到磁盤捺檬, 如果發(fā)生故障,最多丟失1秒鐘的數(shù)據(jù)欺冀;也可以設(shè)置每寫入1條數(shù)據(jù),就同步一次到磁盤,做到數(shù)據(jù)不丟渤早, 但是這樣Redis的QPS就會(huì)大幅度降低。
2 RDB
生成文件快照的方式悴灵。
定時(shí)生成一個(gè)全量文件快照的方式骂蓖。適合做冷備份。
會(huì)生成多個(gè)文件快照茫孔, 可以寫個(gè)定時(shí)的腳本被芳, 將文件快照傳輸?shù)狡渌?wù)器上面去做備份。
可以保證Redis的性能最高畔濒, 因?yàn)槭窍喔粢欢螘r(shí)間才會(huì)進(jìn)行備份。
相隔備份的時(shí)長(zhǎng),可以通過(guò)配置來(lái)設(shè)定毅整。
恢復(fù)過(guò)程: 直接加載文件到內(nèi)存中绽左。
數(shù)據(jù)恢復(fù)比AOF快。
兩次備份之間妇菱, 如果發(fā)生故障闯团,就會(huì)丟掉沒(méi)有來(lái)得及備份的數(shù)據(jù)。
RDB文件大的時(shí)候房交, 生成的時(shí)候會(huì)導(dǎo)致數(shù)據(jù)停止服務(wù),幾秒或者其他刃唤。