Redis面試相關(guān)

1.Redis中的數(shù)據(jù)結(jié)構(gòu)

答:字符串String叮称、字典Hash酣藻、列表List、集合Set程储、有序集合SortedSet蹭沛、HyperLogLog(基數(shù)統(tǒng)計)、Geo(地理位置)章鲤、Pub/Sub(發(fā)布訂閱)摊灭。Redis Module、RedisSearch败徊、Redis-ML是什么鬼帚呼,后續(xù)要學習一下。BlomFilter過濾器即多個Hash函數(shù)判定一個Key是否存在皱蹦,在允許一定誤判場景下煤杀,BloomFilter是有用的,擴展BloomFilter等沪哺。

2.Redis分布式鎖

setnx + expire命令或者set ex nx命令沈自,推薦使用后者。因為辜妓,setnx + expire為兩條指令并非原子操作枯途,在setnx命令執(zhí)行成功,expire命令執(zhí)行失敗的情況下會導(dǎo)致該key被一直鎖住籍滴,因為平常使用分布式鎖時酪夷,推薦使用set ex nx命令的原子操作。

3. Redis key處理相關(guān)

Redis中提供了keys命令可以我們按照指定模式進行key查找异逐。例如捶索,查找某一前綴的所有key,可以這么搞keys prefix灰瞻。像這種按模式匹配key查找的命令是要進行整個鍵空間的掃描的且Redis是單線程的腥例,掃描大量的鍵空間,會導(dǎo)致線上服務(wù)停頓酝润,直到該指令執(zhí)行完畢燎竖,服務(wù)才能恢復(fù)。通常采用scan這種無阻塞的方法進行整個鍵空間的增量式迭代要销。例如构回,scan mykey 0 match prefix,返回指定匹配模式的鍵疏咐,采用這種方法可能存在key重復(fù)的情況纤掸,應(yīng)用程序代碼中需要進行去重處理。

4.Redis異步隊列

Redis中一般使用List作為隊列浑塞,rpush生產(chǎn)消息借跪,lpop消費消息,阻塞式消費消息采用blpop或brpop命令酌壕。如果需要實現(xiàn)一對多的生產(chǎn)消費掏愁,則需要結(jié)合Redis的Pub/Sub發(fā)布訂閱機制,實現(xiàn)1:N的消息隊列卵牍。使用發(fā)布訂閱機制果港,在消費者下線的情況下,生產(chǎn)的消息將會丟失糊昙,必須使用專業(yè)的消息隊列辛掠。

Redis中延時隊列的實現(xiàn)方法:采用sortedset(有序集合),其中score值采用時間戳释牺,應(yīng)用程序代碼按照時間段輪詢萝衩,每次通過sortedset提供的zrangebyscore命令獲取某段時間內(nèi)相關(guān)的key,進行相應(yīng)處理

5. Redis過期處理

Redis在處理某一時刻大量key過期的情況下船侧,會存在短暫的卡頓現(xiàn)象欠气。正確地設(shè)置過期時間的方法是在某一固定時間的基礎(chǔ)上增加一個隨機偏移。

6. Redis持久化

bgsave做鏡像全量持久化镜撩,aof做增量持久化预柒。因為bgsave會耗費較長時間,不夠?qū)崟r袁梗,在停機的時候會導(dǎo)致大量丟失數(shù)據(jù)宜鸯,所以需要aof來配合使用。在redis實例重啟時遮怜,優(yōu)先使用aof來恢復(fù)內(nèi)存的狀態(tài)淋袖,如果沒有aof日志,就會使用rdb文件來恢復(fù)锯梁。

如果再問aof文件過大恢復(fù)時間過長怎么辦即碗?你告訴面試官焰情,Redis會定期做aof重寫,壓縮aof文件日志大小剥懒。如果面試官不夠滿意内舟,再拿出殺手锏答案,Redis4.0之后有了混合持久化的功能初橘,將bgsave的全量和aof的增量做了融合處理验游,這樣既保證了恢復(fù)的效率又兼顧了數(shù)據(jù)的安全性。這個功能甚至很多面試官都不知道保檐,他們肯定會對你刮目相看耕蝉。

如果對方追問那如果突然機器掉電會怎樣?取決于aof日志sync屬性的配置夜只,如果不要求性能垒在,在每條寫指令時都sync一下磁盤,就不會丟失數(shù)據(jù)盐肃。但是在高性能的要求下每次都sync是不現(xiàn)實的爪膊,一般都使用定時sync,比如1s1次砸王,這個時候最多就會丟失1s的數(shù)據(jù)推盛。

如果對方追問bgsave的原理是什么?你給出兩個詞匯就可以了谦铃,fork和cow耘成。fork是指redis通過創(chuàng)建子進程來進行bgsave操作,cow指的是copy on write驹闰,子進程創(chuàng)建后瘪菌,父子進程共享數(shù)據(jù)段,父進程繼續(xù)提供讀寫服務(wù)嘹朗,寫臟的頁面數(shù)據(jù)會逐漸和子進程分離開來师妙。

7. Redis pipeline

Redis pipeline可以將多次I/O往返的時間縮減為一次,能夠使用pipeline的前提是各個指令之間沒有因果關(guān)系屹培。redis-benchmark進行壓測的時候顯示影響redis qps峰值的一個重要因素是pipeline批次指令的數(shù)目默穴。

8. Redis同步機制

Redis可以使用主從同步,從從同步褪秀。第一次同步時蓄诽,主節(jié)點做一次bgsave,并同時將后續(xù)修改操作記錄到內(nèi)存buffer媒吗,待完成后將rdb文件全量同步到復(fù)制節(jié)點仑氛,復(fù)制節(jié)點接受完成后將rdb鏡像加載到內(nèi)存。加載完成后,再通知主節(jié)點將期間修改的操作記錄同步到復(fù)制節(jié)點進行重放就完成了同步過程锯岖。

9. Redis集群

Redis Sentinal著眼于高可用介袜,在master宕機時自動將slave提升為master,繼續(xù)提供服務(wù)嚎莉。
Redis Cluster著眼于擴展性米酬,在單機內(nèi)存不足的情況下沛豌,使用Cluster進行數(shù)據(jù)分片存儲趋箩。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市加派,隨后出現(xiàn)的幾起案子叫确,更是在濱河造成了極大的恐慌,老刑警劉巖芍锦,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件竹勉,死亡現(xiàn)場離奇詭異,居然都是意外死亡娄琉,警方通過查閱死者的電腦和手機次乓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來孽水,“玉大人票腰,你說我怎么就攤上這事∨” “怎么了杏慰?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長炼鞠。 經(jīng)常有香客問我缘滥,道長,這世上最難降的妖魔是什么谒主? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任朝扼,我火速辦了婚禮,結(jié)果婚禮上霎肯,老公的妹妹穿的比我還像新娘擎颖。我一直安慰自己,他們只是感情好姿现,可當我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布肠仪。 她就那樣靜靜地躺著,像睡著了一般备典。 火紅的嫁衣襯著肌膚如雪异旧。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天提佣,我揣著相機與錄音吮蛹,去河邊找鬼荤崇。 笑死,一個胖子當著我的面吹牛潮针,可吹牛的內(nèi)容都是我干的术荤。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼每篷,長吁一口氣:“原來是場噩夢啊……” “哼瓣戚!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起焦读,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤子库,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后矗晃,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體仑嗅,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年张症,在試婚紗的時候發(fā)現(xiàn)自己被綠了仓技。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡俗他,死狀恐怖脖捻,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情拯辙,我是刑警寧澤郭变,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站涯保,受9級特大地震影響诉濒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜夕春,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一未荒、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧及志,春花似錦片排、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至倚搬,卻和暖如春冶共,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工捅僵, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留家卖,地道東北人。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓庙楚,卻偏偏與公主長得像上荡,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子馒闷,可洞房花燭夜當晚...
    茶點故事閱讀 43,490評論 2 348

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

  • 1酪捡、什么是Redis? Redis本質(zhì)上是一個Key-Value類型的內(nèi)存數(shù)據(jù)庫窜司,很像memcached沛善,整個數(shù)據(jù)...
    夜風月圓閱讀 2,214評論 0 23
  • 使用緩存是系統(tǒng)性能優(yōu)化的第一黃金法則。 緩存的設(shè)計和使用對一個系統(tǒng)的性能至關(guān)重要塞祈,平時接觸到項目無論多少也都會在某...
    刀刃丿閱讀 1,332評論 0 6
  • 從這篇文章開始,將依次介紹Redis高可用相關(guān)的知識——持久化帅涂、復(fù)制(及讀寫分離)议薪、哨兵、以及集群媳友。 本文將先說明...
    不變甄心閱讀 692評論 0 4
  • 文章已經(jīng)放到github上 斯议,如果對您有幫助 請給個star[https://github.com/qqxuanl...
    尼爾君閱讀 2,284評論 0 22
  • 只有自己會很愛很愛自己,不要在意別人的說法醇锚,其實最重要的哼御,僅僅是做好自己,不要為了不必要的人去改變自己焊唬,因為也許你...
    Zurichy閱讀 133評論 0 1