redis面試知識點(diǎn)

此文純屬個(gè)人筆記
redis知識點(diǎn):
  • 5種數(shù)據(jù)結(jié)構(gòu)
  • 主從復(fù)制
  • 哨兵模式
  • 持久化
1. 5種數(shù)據(jù)結(jié)構(gòu):

(1)String(字符串):
應(yīng)用場景:微博數(shù)碟案,粉絲數(shù)价说;set key value; get key

(2)Hash(哈希)鳖目;應(yīng)用場景:存儲(chǔ)部分變更的數(shù)據(jù)领迈,如用戶信息等。
我們可以將hashes 類型看成具有string key 和string value的map容器;

(3)list(列表):應(yīng)用場景 消息隊(duì)列系統(tǒng)尘喝,比如sina微博朽褪。
list類型是按照插入順序排序的字符串鏈表缔赠。和數(shù)據(jù)結(jié)構(gòu)中的普通鏈表一樣戴质,我們可以在其頭部和尾部添加新的元素置森。在插入時(shí)凫海,如果該鍵并不存在行贪,redis將為該鍵創(chuàng)建一個(gè)新的鏈表。 rpush key [value]

(4)set(無序集合):應(yīng)用場景:在微博應(yīng)用中啰脚,可以將一個(gè)用戶所有的關(guān)注人存在一個(gè)集合中,將其所有粉絲存在一個(gè)集合荸实;redis還為集合提供了求交集准给、并集露氮、差集等操作畔规,可以非常方便的實(shí)現(xiàn)如共同關(guān)注详民、共同喜歡沈跨、二度好友等功能,對上面的所有集合操作涧窒,你還可以使用不同的命令選擇將結(jié)果返回給客戶端還是存到一個(gè)新的集合中;
sadd key number1 number2
smembers key 返回key 中所有元素
sismember key number 判斷number是否是集合key的成員
sdiff key1 key2 獲取集合的差集
sinter key1 key2 返回兩集合的交集
sunion key1 key2 返回兩集合的并集

(5)sorted-sets (有序集合):sorted-sets中的每一個(gè)成員都會(huì)有一個(gè)分?jǐn)?shù)與之關(guān)聯(lián)锭亏,redis正是通過分?jǐn)?shù)來為集合中的成員進(jìn)行從小到大的排序纠吴,成員是唯一的,但是分?jǐn)?shù)卻是可以重復(fù)的慧瘤;集合是通過哈希表 實(shí)現(xiàn)的戴已,所以添加,刪除糖儡,查找的復(fù)雜度都是O(1),集合中最大的成員數(shù)為232-1

2. 主從復(fù)制

主從:主對于數(shù)據(jù)可讀可寫怔匣,從默認(rèn)只讀不寫握联。當(dāng)從連接上主時(shí),主會(huì)將數(shù)據(jù)同步到從上每瞒;
redis是怎么實(shí)現(xiàn)主從的數(shù)據(jù)同步的金闽?
全量同步
1)從服務(wù)器連接到主服務(wù)器,發(fā)送SYNC命令独泞;
2)主服務(wù)器接收到sync命名后呐矾,開始執(zhí)行bgsave命令生成RDB文件并使用緩沖區(qū)記錄此后執(zhí)行的所有寫命令;
3)主服務(wù)器bgsave執(zhí)行完后懦砂,向所有從服務(wù)器發(fā)送快照文件,并在發(fā)送期間繼續(xù)記錄被執(zhí)行的寫命令组橄;
4)從服務(wù)器收到快照文件后丟棄所有舊數(shù)據(jù)荞膘,載入收到的快照;
5)主服務(wù)器快照發(fā)送完畢后開始向從服務(wù)器發(fā)送緩沖區(qū)中的寫命令玉工;
6)從服務(wù)器完成對快照對載入羽资,開始接收命令請求,并執(zhí)行來自主服務(wù)器緩沖區(qū)對寫命令遵班;
增量同步:
假設(shè)發(fā)送網(wǎng)絡(luò)抖動(dòng)或者別的情況屠升,暫時(shí)失去了連接潮改,等slave重新連上的時(shí)候,slave向master發(fā)送自己的offset和runid主服務(wù)器把自己擠壓緩沖區(qū)里面偏移量在offset之后的數(shù)據(jù)全部同步給從服務(wù)器腹暖。

3.哨兵模式:監(jiān)控redis系統(tǒng)的運(yùn)行狀況汇在;

redis的哨兵系統(tǒng)用于管理多個(gè)redis服務(wù)器,該系統(tǒng)執(zhí)行以下三個(gè)任務(wù):
a.監(jiān)控:哨兵會(huì)不斷檢查你的Master和slave是否運(yùn)作正常脏答;
b.提醒:當(dāng)被監(jiān)控的某個(gè)redis出現(xiàn)問題時(shí)糕殉,哨兵可以通過API向管理員或者其他應(yīng)用程序發(fā)送通知
c.自動(dòng)故障遷移,當(dāng)一個(gè)master不能正常工作時(shí)殖告,哨兵會(huì)開始一次自動(dòng)故障遷移操作阿蝶,它會(huì)將失效, master的其中一個(gè)slave升級為新的master,并讓失效master的其他撒略改為復(fù)制新的master黄绩。當(dāng)客戶端試圖連接失效的master時(shí)羡洁,集群也會(huì)向客戶端返回新的master的地址,使得集群可以使用新的master爽丹;

4.redis持久化

redis 提供了多種不同級別的持久化方式:一種是RDB焚廊,另一種是AOF
A. RDB持久化:
可以在指定的時(shí)間間隔內(nèi)生成數(shù)據(jù)集的時(shí)間點(diǎn)快照,RDB是一個(gè)非常緊湊的文件习劫,它保存另redis在某個(gè)時(shí)間點(diǎn)上的數(shù)據(jù)集咆瘟,這種文件非常適合用于進(jìn)行備份,比如說诽里,你可以在最近的24小時(shí)內(nèi)袒餐,每小時(shí)備份一次RDB文件,并且在每個(gè)月的每一天谤狡,也備份一個(gè)RDB文件灸眼。RDB非常適用于災(zāi)難恢復(fù):它只有一個(gè)文件,并且內(nèi)容非常緊湊墓懂,可以(在加密后)將它傳到別的數(shù)據(jù)中焰宣。RDB可以最大化redis的性能:父進(jìn)程在保存RDB文件時(shí)唯一要做的就是fork出一個(gè)子進(jìn)程,然后這個(gè)子進(jìn)程就會(huì)處理接下來所有保存工作捕仔,父進(jìn)程無須執(zhí)行任何磁盤I/O操作匕积;RDB 在恢復(fù)大數(shù)據(jù)集時(shí)的速度比AOF的恢復(fù)速度快

B. AOF持久化
(1)使用AOF會(huì)讓你的redis更加耐久,你可以使用不同的fsync策略榜跌,無fsync闪唆,每秒fsync,每次寫的時(shí)候fsync钓葫,使用默認(rèn)的每秒fsync策略悄蕾,redis的性能依然會(huì)好(fsync是由后臺線程進(jìn)行處理的,主線程會(huì)盡力處理客戶端請求)础浮,一旦出現(xiàn)故障帆调,最多丟失1秒的數(shù)據(jù)奠骄。
(2)redis可以在aof文件體積變得過大時(shí),自動(dòng)的在后臺對AOF進(jìn)行重寫:重寫后的新AOF文件包含另恢復(fù)當(dāng)前數(shù)據(jù)所需的最小命令集合番刊,整個(gè)重寫操作是絕對安全的因?yàn)閞edis在創(chuàng)建新AOF文件的過程中含鳞,會(huì)繼續(xù)將命令追加到現(xiàn)有的AOF文件里面,即使重寫過程中發(fā)生停機(jī)撵枢,現(xiàn)有AOF文件也不會(huì)丟失,一旦新AOF文件創(chuàng)建完畢民晒,redis就會(huì)從舊AOF文件切換到新AOF文件,并開始對新AOF文件進(jìn)行追加操作锄禽。AOF文件有序的保存了對數(shù)據(jù)庫執(zhí)行的所有寫入操作潜必,這些寫入操作以redis協(xié)議的格式保存,因此AOF文件的內(nèi)容非常容易被人讀懂沃但,對文件進(jìn)行分析也很輕松磁滚,導(dǎo)出aof文件也非常簡單。
當(dāng)redis啟動(dòng)時(shí)宵晚,如果rdb持久化和aof持久化都被打開了垂攘,那么程序會(huì)優(yōu)先使用AOF,因?yàn)閍of保存當(dāng)數(shù)據(jù)通常是最完整的;
缺點(diǎn):對于相同對數(shù)據(jù)集來說淤刃,AOF文件的體積通常要大于RDB文件的體積

  1. 什么是緩存穿透晒他、緩存擊穿、緩存雪崩 以及他們的解決方式逸贾?
    (1)緩存穿透:大量請求中的key不存在redis中陨仅,會(huì)造成大量請求訪問數(shù)據(jù)庫,造成數(shù)據(jù)庫崩潰
    解決方法:做參數(shù)校驗(yàn)铝侵,將一些請求不合法的請求參數(shù)拋出異常返回給前端灼伤;如果請求的key不頻繁變化的話,第一次在緩存和數(shù)據(jù)庫中都查不到的話咪鲜,就存到redis中狐赡,設(shè)置value為null; 布隆過濾器
    (2)緩存雪崩 :緩存在同一時(shí)間失效,致使全部請求落到數(shù)據(jù)庫上
    解決方法:隨機(jī)設(shè)置過期時(shí)間
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末疟丙,一起剝皮案震驚了整個(gè)濱河市颖侄,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌隆敢,老刑警劉巖发皿,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異拂蝎,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)惶室,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進(jìn)店門温自,熙熙樓的掌柜王于貴愁眉苦臉地迎上來玄货,“玉大人,你說我怎么就攤上這事悼泌∷勺剑” “怎么了?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵馆里,是天一觀的道長隘世。 經(jīng)常有香客問我,道長鸠踪,這世上最難降的妖魔是什么丙者? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮营密,結(jié)果婚禮上械媒,老公的妹妹穿的比我還像新娘。我一直安慰自己评汰,他們只是感情好纷捞,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著被去,像睡著了一般主儡。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上惨缆,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天糜值,我揣著相機(jī)與錄音,去河邊找鬼踪央。 笑死臀玄,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的畅蹂。 我是一名探鬼主播健无,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼液斜!你這毒婦竟也來了累贤?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤少漆,失蹤者是張志新(化名)和其女友劉穎臼膏,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體示损,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡渗磅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片始鱼。...
    茶點(diǎn)故事閱讀 38,018評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡仔掸,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出医清,到底是詐尸還是另有隱情起暮,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布会烙,位于F島的核電站负懦,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏柏腻。R本人自食惡果不足惜纸厉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望葫盼。 院中可真熱鬧残腌,春花似錦、人聲如沸贫导。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽孩灯。三九已至闺金,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間峰档,已是汗流浹背败匹。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留讥巡,地道東北人掀亩。 一個(gè)月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像欢顷,于是被迫代替她去往敵國和親槽棍。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 一抬驴、Redis高可用概述 在介紹Redis高可用之前炼七,先說明一下在Redis的語境中高可用的含義。 我們知道布持,在w...
    空語閱讀 1,593評論 0 2
  • 1.1 資料 豌拙,最好的入門小冊子,可以先于一切文檔之前看题暖,免費(fèi)按傅。 作者Antirez的博客捉超,Antirez維護(hù)的R...
    JefferyLcm閱讀 17,032評論 1 51
  • 企業(yè)級redis集群架構(gòu)的特點(diǎn) 海量數(shù)據(jù) 高并發(fā) 高可用 要達(dá)到高可用,持久化是不可減少的逞敷,持久化主要是做災(zāi)難恢復(fù)...
    lucode閱讀 2,193評論 0 7
  • Redis是啥 Redis是一個(gè)開源的key-value存儲(chǔ)系統(tǒng)灌侣,由于擁有豐富的數(shù)據(jù)結(jié)構(gòu),又被其作者戲稱為數(shù)據(jù)結(jié)構(gòu)...
    一凡呀閱讀 1,171評論 0 5
  • NOSQL類型簡介鍵值對:會(huì)使用到一個(gè)哈希表牛柒,表中有一個(gè)特定的鍵和一個(gè)指針指向特定的數(shù)據(jù),如redis皮壁,volde...
    MicoCube閱讀 3,958評論 2 27