Redis 面試經(jīng)典問題

Redis有哪些數(shù)據(jù)結(jié)構(gòu)界轩?

字符串String、字典Hash玩荠、列表List漆腌、集合Set、有序集合SortedSet阶冈。 如果 你是Redis中高級用戶闷尿,還需要加上下面幾種數(shù)據(jù)結(jié)構(gòu)HyperLogLog、Geo女坑、Pub/Sub填具。 如果你說還玩過Redis Module,像BloomFilter,RedisSearch劳景,Redis-ML誉简,面試官得眼睛就開始發(fā)亮了。

使用過Redis分布式鎖么盟广,它是什么回事闷串?

先拿setnx來爭搶鎖,搶到之后筋量,再用expire給鎖加一個過期時間防止鎖忘記了釋放烹吵。

這時候?qū)Ψ綍嬖V你說你回答得不錯,然后接著問如果在setnx之后執(zhí)行expire之前進(jìn)程意外crash或者要重啟維護(hù)了桨武,那會怎么樣年叮?

這時候你要給予驚訝的反饋:唉,是喔玻募,這個鎖就永遠(yuǎn)得不到釋放了只损。緊接著你需要抓一抓自己得腦袋,故作思考片刻七咧,好像接下來的結(jié)果是你主動思考出來的跃惫,然后回答:我記得set指令有非常復(fù)雜的參數(shù),這個應(yīng)該是可以同時把setnx和expire合成一條指令來用的艾栋!對方這時會顯露笑容爆存,心里開始默念:摁,這小子還不錯蝗砾。 假如Redis里面有1億個key先较,其中有10w個key是以某個固定的已知的前綴開頭的,如果將它們?nèi)空页鰜恚?使用keys指令可以掃出指定模式的key列表悼粮。 對方接著追問:如果這個redis正在給線上的業(yè)務(wù)提供服務(wù)闲勺,那使用keys指令會有什么問題? 這個時候你要回答redis關(guān)鍵的一個特性:redis的單線程的扣猫。keys指令會導(dǎo)致線程阻塞一段時間菜循,線上服務(wù)會停頓,直到指令執(zhí)行完畢申尤,服務(wù)才能恢復(fù)癌幕。這個時候可以使用scan指令,scan指令可以無阻塞的提取出指定模式的key列表昧穿,但是會有一定的重復(fù)概率勺远,在客戶端做一次去重就可以了,但是整體所花費的時間會比直接用keys指令長时鸵。

使用過Redis做異步隊列么胶逢,你是怎么用的?

一般使用list結(jié)構(gòu)作為隊列,rpush生產(chǎn)消息宪塔,lpop消費消息。當(dāng)lpop沒有消息的時候囊拜,要適當(dāng)sleep一會再重試某筐。

如果對方追問可不可以不用sleep呢?list還有個指令叫blpop冠跷,在沒有消息的時候南誊,它會阻塞住直到消息到來。 如果對方追問能不能生產(chǎn)一次消費多次呢蜜托?使用pub/sub主題訂閱者模式抄囚,可以實現(xiàn)1:N的消息隊列。 如果對方追問pub/sub有什么缺點橄务?在消費者下線的情況下幔托,生產(chǎn)的消息會丟失,得使用專業(yè)的消息隊列如rabbitmq等蜂挪。 如果對方追問redis如何實現(xiàn)延時隊列重挑?我估計現(xiàn)在你很想把面試官一棒打死如果你手上有一根棒球棍的話,怎么問的這么詳細(xì)棠涮。 但是你很克制谬哀,然后神態(tài)自若的回答道:使用sortedset,拿時間戳作為score严肪,消息內(nèi)容作為key調(diào)用zadd來生產(chǎn)消息史煎,消費者用zrangebyscore指令獲取N秒之前的數(shù)據(jù)輪詢進(jìn)行處理。 到這里驳糯,面試官暗地里已經(jīng)對你豎起了大拇指篇梭。但是他不知道的是此刻你卻豎起了中指,在椅子背后酝枢。

如果有大量的key需要設(shè)置同一時間過期很洋,一般需要注意什么? 如果大量的key過期時間設(shè)置的過于集中隧枫,到過期的那個時間點喉磁,redis可能會出現(xiàn)短暫的卡頓現(xiàn)象。一般需要在時間上加一個隨機(jī)值官脓,使得過期時間分散一些协怒。

Redis如何做持久化的?

bgsave做鏡像全量持久化卑笨,aof做增量持久化孕暇。
因為bgsave會耗費較長時間追迟,不夠?qū)崟r,在停機(jī)的時候會導(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ù)的安全性。這個功能甚至很多面試官都不知道负蚊,他們肯定會對你刮目相看责静。 如果對方追問那如果突然機(jī)器掉電會怎樣?取決于aof日志sync屬性的配置盖桥,如果不要求性能灾螃,在每條寫指令時都sync一下磁盤,就不會丟失數(shù)據(jù)揩徊。但是在高性能的要求下每次都sync是不現(xiàn)實的腰鬼,一般都使用定時sync,比如1s1次塑荒,這個時候最多就會丟失1s的數(shù)據(jù)熄赡。

Pipeline有什么好處,為什么要用pipeline齿税?

可以將多次IO往返的時間縮減為一次彼硫,前提是pipeline執(zhí)行的指令之間沒有因果相關(guān)性。使用redis-benchmark進(jìn)行壓測的時候可以發(fā)現(xiàn)影響redis的QPS峰值的一個重要因素是pipeline批次指令的數(shù)目凌箕。

是否使用過Redis集群拧篮,集群的原理是什么?

Redis Sentinal著眼于高可用牵舱,在master宕機(jī)時會自動將slave提升為master串绩,繼續(xù)提供服務(wù)。 Redis Cluster著眼于擴(kuò)展性芜壁,在單個redis內(nèi)存不足時礁凡,使用Cluster進(jìn)行分片存儲高氮。

轉(zhuǎn)載至 [https://studygolang.com/topics/8781]

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市顷牌,隨后出現(xiàn)的幾起案子剪芍,更是在濱河造成了極大的恐慌,老刑警劉巖窟蓝,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件罪裹,死亡現(xiàn)場離奇詭異,居然都是意外死亡疗锐,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進(jìn)店門费彼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來滑臊,“玉大人,你說我怎么就攤上這事箍铲」途恚” “怎么了?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵颠猴,是天一觀的道長关划。 經(jīng)常有香客問我,道長翘瓮,這世上最難降的妖魔是什么贮折? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮资盅,結(jié)果婚禮上调榄,老公的妹妹穿的比我還像新娘。我一直安慰自己呵扛,他們只是感情好每庆,可當(dāng)我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著今穿,像睡著了一般缤灵。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蓝晒,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天腮出,我揣著相機(jī)與錄音,去河邊找鬼芝薇。 笑死利诺,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的剩燥。 我是一名探鬼主播慢逾,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼立倍,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了侣滩?” 一聲冷哼從身側(cè)響起口注,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎君珠,沒想到半個月后寝志,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡策添,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年材部,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片唯竹。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡乐导,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出浸颓,到底是詐尸還是另有隱情物臂,我是刑警寧澤,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布产上,位于F島的核電站棵磷,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏晋涣。R本人自食惡果不足惜仪媒,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望谢鹊。 院中可真熱鬧规丽,春花似錦、人聲如沸撇贺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽松嘶。三九已至艘狭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間翠订,已是汗流浹背巢音。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留尽超,地道東北人官撼。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像似谁,于是被迫代替她去往敵國和親傲绣。 傳聞我的和親對象是個殘疾皇子掠哥,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,864評論 2 354