高可用
哨兵模式
基于主從模式(一主多從)锭汛,主服務(wù)器提供寫服務(wù)么夫,從服務(wù)器同步主服務(wù)器棍苹,從服務(wù)器可提供讀服務(wù)沸枯,哨兵(可多個(gè)節(jié)點(diǎn)實(shí)現(xiàn)高可用)監(jiān)控所有服務(wù)狮暑,實(shí)現(xiàn)故障時(shí)自動(dòng)主從切換
缺點(diǎn): 只提供高可用并沒(méi)有提高redis的讀寫能力,存在主從切換時(shí)瞬斷問(wèn)題
高可用集群模式
redis單機(jī)支持10萬(wàn)并發(fā)辉饱, Redis集群水平擴(kuò)展能突破這個(gè)并發(fā)數(shù)
各個(gè)集群模式數(shù)據(jù)獨(dú)立, Jedis(Redis官方推薦的Java連接開(kāi)發(fā)工具)通過(guò)算法計(jì)算緩存key落在哪個(gè)集群拣展,再由這個(gè)集群提供服務(wù)彭沼,算法參考 java面試寶典 redis篇 一致性hash算法, 假如集群主服務(wù)器掛了备埃,對(duì)應(yīng)的服務(wù)唯一碼也會(huì)在列表中去掉姓惑,請(qǐng)求也就不會(huì)往故障集群發(fā)送,這就解決了主從切換瞬斷的問(wèn)題
持久化
RDB
RDB持久化是指在指定的時(shí)間間隔內(nèi)將內(nèi)存中的數(shù)據(jù)集快照寫入磁盤
三種觸發(fā)模式
- save觸發(fā)方式
該命令會(huì)阻塞當(dāng)前Redis服務(wù)器按脚,執(zhí)行save命令期間于毙,Redis不能處理其他命令,直到持久化過(guò)程完成為止辅搬, 這種方式顯然不可取唯沮。 - bgsave觸發(fā)方式
執(zhí)行該save命令時(shí)脖旱,Redis會(huì)在后臺(tái)異步進(jìn)行快照操作, 默認(rèn)采用這種方式 - 自動(dòng)觸發(fā)
自動(dòng)觸發(fā)是由我們的配置文件來(lái)完成的。在redis.conf配置文件中介蛉,我們可以去設(shè)置
優(yōu)點(diǎn):
(1)RDB快照是一次全量備份萌庆,存儲(chǔ)的是內(nèi)存數(shù)據(jù)的二進(jìn)制序列化形式,存儲(chǔ)上非常緊湊币旧,非常適合用于進(jìn)行備份和災(zāi)難恢復(fù)践险。
(2)RDB 在恢復(fù)大數(shù)據(jù)集時(shí)的速度比 AOF 的恢復(fù)速度要快。
缺點(diǎn):
備份是用子線程備份吹菱, 父進(jìn)程修改內(nèi)存子進(jìn)程不會(huì)反應(yīng)出來(lái)巍虫,所以在快照持久化期間修改的數(shù)據(jù)不會(huì)被保存,可能丟失數(shù)據(jù)鳍刷。
AOF
redis會(huì)將每一個(gè)收到的寫命令都通過(guò)write函數(shù)追加到文件中占遥。通俗的理解就是日志記錄。
由于持久化文件會(huì)變的越來(lái)越大倾剿, redis會(huì)會(huì)fork出一條新進(jìn)程來(lái)將文件重寫筷频, 重寫aof文件的操作,并沒(méi)有讀取舊的aof文件前痘,而是將整個(gè)內(nèi)存中的數(shù)據(jù)庫(kù)內(nèi)容用命令的方式重寫了一個(gè)新的aof文件凛捏,這點(diǎn)和快照有點(diǎn)類似。
二種觸發(fā)模式
- 同步觸發(fā)芹缔,數(shù)據(jù)可靠坯癣,但是會(huì)有延遲
- 異步觸發(fā),沒(méi)有延遲最欠,可能有數(shù)據(jù)丟失
優(yōu)點(diǎn):
AOF日志文件的命令通過(guò)非呈韭蓿可讀的方式進(jìn)行記錄,這個(gè)特性非常適合做災(zāi)難性的誤刪除的緊急恢復(fù)芝硬。比如某人不小心用flushall命令清空了所有數(shù)據(jù)蚜点,只要這個(gè)時(shí)候后臺(tái)rewrite還沒(méi)有發(fā)生,那么就可以立即拷貝AOF文件拌阴,將最后一條flushall命令給刪了绍绘,然后再將該AOF文件放回去,就可以通過(guò)恢復(fù)機(jī)制迟赃,自動(dòng)恢復(fù)所有數(shù)據(jù)
缺點(diǎn):
(1)對(duì)于同一份數(shù)據(jù)來(lái)說(shuō)陪拘,AOF日志文件通常比RDB數(shù)據(jù)快照文件更大
(2)以前AOF發(fā)生過(guò)bug,就是通過(guò)AOF記錄的日志纤壁,進(jìn)行數(shù)據(jù)恢復(fù)的時(shí)候左刽,沒(méi)有恢復(fù)一模一樣的數(shù)據(jù)出來(lái)。
更多demo請(qǐng)關(guān)注
springboot demo實(shí)戰(zhàn)項(xiàng)目
java 腦洞
java 面試寶典
開(kāi)源工具
公眾號(hào)
五分鐘了解前沿技術(shù)酌媒,大數(shù)據(jù)欠痴,微服務(wù)迄靠,區(qū)域鏈,提供java前沿技術(shù)干貨斋否,獨(dú)立游戲制作技術(shù)分享
如果這篇文章對(duì)你有幫助請(qǐng)給個(gè)star