嘮個(gè)嗑
現(xiàn)在的面試要求是越來越難了帝洪,想當(dāng)初畢業(yè)后面試開發(fā)崗位如果你會(huì)使用 Redis ,在面試官心中就會(huì)覺得做修,哎呦霍狰,你挺不錯(cuò)哦,算是加分項(xiàng)∈渭埃現(xiàn)在的 Redis 成為了開發(fā)者的必備技能蔗坯,面試如果沒用過或不會(huì)用 Redis,那你就真的可能被勸退了燎含。不停的學(xué)習(xí)新技術(shù)宾濒,或許就是開發(fā)者的宿命。
持久化
Redis 可以用來做緩存屏箍,也屬于 NoSQL 數(shù)據(jù)庫绘梦,所以也支持?jǐn)?shù)據(jù)持久化橘忱,Redis 數(shù)據(jù)庫支持兩種持久化方案:
- RDB 快照
- AOF 日志
- 混合持久化
RDB
配置參數(shù)
redis.conf 涉及的主要配置
#1、自動(dòng)備份規(guī)則(滿足一個(gè)條件就會(huì)觸發(fā)備份動(dòng)作)
save 900 1 #每隔900秒有1次修改則觸發(fā)
save 300 10 #每隔300秒有10次修改則觸發(fā)
save 60 10000 #每隔60秒有10000次修改則觸發(fā)
#2卸奉、是否快照備份出現(xiàn)錯(cuò)誤后禁止客戶端寫入钝诚,默認(rèn)是 yes
stop-writes-on-bgsave-error yes
#3、是否對(duì)快照文件進(jìn)行壓縮榄棵,默認(rèn) yes
rdbcompression yes
#4凝颇、是否對(duì) RDB 文件進(jìn)行校驗(yàn),默認(rèn) yes
rdbchecksum yes
#5疹鳄、定義生成的 RDB 文件名拧略,默認(rèn) dump.rdb
dbfilename dump.rdb
#6、定義生成 RDB 文件目錄尚辑,默認(rèn)是啟動(dòng) Redis 服務(wù)的目錄
dir ./
剛安裝好的 Redis辑鲤,默認(rèn)開啟的是這種持久化方式,在啟動(dòng)服務(wù)的目錄會(huì)備份一個(gè) dump.rdb 文件杠茬,Redis 啟動(dòng)的時(shí)候會(huì)自動(dòng)加載這個(gè)文件來恢復(fù)備份的數(shù)據(jù)。
備份
- 我們可以通過 Redis 客戶端發(fā)送命令 save 手動(dòng)備份當(dāng)前數(shù)據(jù)的快照弛随,但是 save 是阻塞命令瓢喉,當(dāng)備份文件過大,備份操作沒有完成時(shí)舀透,期間接收的其他操作命令將會(huì)被掛起栓票。所以不建議使用 save,這時(shí)候出現(xiàn)了 bgsave愕够,見名知意走贪,它會(huì) fork 一個(gè)子進(jìn)程來處理備份操作惑芭,不影響主進(jìn)程處理客戶端請(qǐng)求命令坠狡。
- 觸發(fā)配置的自動(dòng)備份策略,會(huì)自動(dòng)執(zhí)行 bgsave遂跟。
- 執(zhí)行 shutdown 命令逃沿,會(huì)觸發(fā) save 命令,備份完成后才會(huì)服務(wù)關(guān)閉幻锁。
- 搭建主從復(fù)制時(shí)凯亮,在從機(jī)連上主機(jī)之后,會(huì)自動(dòng)發(fā)送一條 sync 同步命令哄尔,主機(jī)收到命令
之后假消,首先執(zhí)行 bgsave 對(duì)數(shù)據(jù)進(jìn)行快照備份,然后才會(huì)給從機(jī)發(fā)送快照數(shù)據(jù)進(jìn)行同步岭接。
AOF
配置參數(shù)
#1富拗、開啟 aof 配置堂鲤,默認(rèn) no
appendonly yes
#2、定義生成的 AOF 文件名
appendfilename "appendonly.aof"
# 3媒峡、自動(dòng)備份規(guī)則(選擇一個(gè)即可)
# appendfsync always #每次修改都備份
appendfsync everysec #每秒鐘備份一次
# appendfsync no #由操作系統(tǒng)自動(dòng)調(diào)度刷磁盤
#4瘟栖、是否 aof 文件壓縮時(shí)還繼續(xù)進(jìn)行同步操作,默認(rèn) no
no-appendfsync-on-rewrite no
#4谅阿、定義當(dāng)目前 aof 文件大小超過上一次重寫時(shí)的 aof 文件大小的百分之多少的時(shí)候半哟,再次進(jìn)行重寫
auto-aof-rewrite-percentage 100
#5、如果之前沒有重寫過签餐,則以啟動(dòng)時(shí)的 aof 大小為依據(jù)寓涨,同時(shí)要求 aof 文件至少要大于 64M
auto-aof-rewrite-min-size 64mb
默認(rèn) AOF 是沒有開啟的,AOF 持久化是將被執(zhí)行的命令追加到 AOF 文件尾部氯檐,數(shù)據(jù)恢復(fù)時(shí)把命令從頭到尾執(zhí)行一遍
使用 AOF 方式做持久化戒良,可以把 RDB 持久化的策略注釋掉
save ""
#save 900 1
#save 300 10
#save 60 10000
混合持久化
此功能是 Redis4 之后新增的,說實(shí)話我也是前幾天剛了解到的冠摄,接觸的不多糯崎,這里也簡單做個(gè)介紹吧,想深入的那只能讓您失望了河泳,出門左拐直走......
配置參數(shù)
aof-use-rdb-preamble yes
備份方式
通過上面參數(shù)設(shè)為 yes 來開啟沃呢,在數(shù)據(jù)寫入的時(shí)候先把數(shù)據(jù)以 RDB 的格式放在文件開頭,再將后續(xù)的命令以 AOF 的格式追加到文件后面拆挥,這樣算是引進(jìn)了 RDB 數(shù)據(jù)恢復(fù)速度快的優(yōu)點(diǎn) 和 AOF 數(shù)據(jù)丟失風(fēng)險(xiǎn)小的優(yōu)點(diǎn)薄霜。
Redis 部分思維腦圖
如果感覺圖片不清楚,公號(hào) charmsongo 回復(fù) Redis 獲取
如果有哪些不對(duì)的地方煩請(qǐng)指認(rèn)纸兔,先行感謝