RDB持久化
redis的RDB持久話把當(dāng)前進(jìn)程數(shù)據(jù)生成快照(.rdb)文件保存到硬盤(pán)的過(guò)程。有手動(dòng)和和自動(dòng)兩種觸發(fā)方式。
save命令:阻塞當(dāng)前redis,直到RDB持久化過(guò)程完成為止,若內(nèi)存實(shí)力比較大會(huì)造成長(zhǎng)時(shí)間阻塞。
bgsave命令:redis進(jìn)程執(zhí)行fork操作創(chuàng)建子線程,由子線程完成持久化,阻塞時(shí)間很短(微秒級(jí)),在執(zhí)行redis-cli shutdown關(guān)閉redis服務(wù)時(shí),如果沒(méi)開(kāi)AOF持久化自動(dòng)執(zhí)行bgsave.
bgsave執(zhí)行流程:

image.png
RDB文件的操作
命令: config set dir /usr/local //設(shè)置rdb文件保存路徑
備份 : bgsave
恢復(fù):將生成的dump.rdb文件放到redis 安裝目錄與redis.conf同級(jí)重啟redis
RDB文件的優(yōu)缺點(diǎn)
優(yōu)點(diǎn):
- 壓縮后的二進(jìn)制文件適用于備份,全量復(fù)制,災(zāi)難恢復(fù)
- RDB的恢復(fù)速度快于AOF方式
缺點(diǎn):
- 無(wú)法做到實(shí)時(shí)持久化每次都要?jiǎng)?chuàng)建子進(jìn)程,頻繁操作成本過(guò)高
- 備份后的rdb文件會(huì)存在老版本不兼容新版本rdb文件的問(wèn)題
AOF持久化
AOF持久化流程:
- 所有的寫(xiě)入命令會(huì)append追加到aof_buf緩沖區(qū)中
- AOF緩沖去向硬盤(pán)做sync同步
- AOF文件越來(lái)越大,還需要定時(shí)對(duì)AOF文件rewrite重寫(xiě)達(dá)到壓縮
- 當(dāng)redis服務(wù)重啟時(shí),可load加載AOF文件進(jìn)行恢復(fù)。
AOF相關(guān)配置:
appendonly yes //啟用aof持久化方式
appendfsync always //每收到寫(xiě)命令就立即強(qiáng)制寫(xiě)入磁盤(pán),最慢的,但是保證完全的持久化,不推薦使用
appendfsync everysec //每秒強(qiáng)制寫(xiě)入磁盤(pán)一次,性能和持久化方面做了折中,推薦
auto-aof-rewrite-percentage 100 //aof文件大小比起上次重寫(xiě)時(shí)的大小,增長(zhǎng)率100%時(shí),重寫(xiě)
auto-aof-rewrite-min-size 64mb //aof文件,至少超過(guò)64M時(shí),重寫(xiě)