成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

天下無難試之Redis面試刁難大全

存儲 存儲軟件 Redis
Redis在互聯網技術存儲方面使用如此廣泛,幾乎所有的后端技術面試官都要在Redis的使用和原理方面對小伙伴們進行各種刁難。作

 Redis在互聯網技術存儲方面使用如此廣泛,幾乎所有的后端技術面試官都要在Redis的使用和原理方面對小伙伴們進行各種刁難。作為一名在互聯網技術行業打擊過成百上千名的資深技術面試官,看過了無數落寞的身影失望的離開,略感愧疚,故獻上此文,希望各位讀者以后面試勢如破竹,永無失敗!

Redis有哪些數據結構?

字符串String、字典Hash、列表List、集合Set、有序集合SortedSet。

如果你是Redis中高級用戶,還需要加上下面幾種數據結構HyperLogLog、Geo、Pub/Sub。

如果你說還玩過Redis Module,像BloomFilter,RedisSearch,Redis-ML,面試官得眼睛就開始發亮了。

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

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

這時候對方會告訴你說你回答得不錯,然后接著問如果在setnx之后執行expire之前進程意外crash或者要重啟維護了,那會怎么樣?

這時候你要給予驚訝的反饋:唉,是喔,這個鎖就永遠得不到釋放了。緊接著你需要抓一抓自己得腦袋,故作思考片刻,好像接下來的結果是你主動思考出來的,然后回答:我記得set指令有非常復雜的參數,這個應該是可以同時把setnx和expire合成一條指令來用的!對方這時會顯露笑容,心里開始默念:摁,這小子還不錯。

假如Redis里面有1億個key,其中有10w個key是以某個固定的已知的前綴開頭的,如果將它們全部找出來?

使用keys指令可以掃出指定模式的key列表。

對方接著追問:如果這個redis正在給線上的業務提供服務,那使用keys指令會有什么問題?

這個時候你要回答redis關鍵的一個特性:redis的單線程的。keys指令會導致線程阻塞一段時間,線上服務會停頓,直到指令執行完畢,服務才能恢復。這個時候可以使用scan指令,scan指令可以無阻塞的提取出指定模式的key列表,但是會有一定的重復概率,在客戶端做一次去重就可以了,但是整體所花費的時間會比直接用keys指令長。

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

一般使用list結構作為隊列,rpush生產消息,lpop消費消息。當lpop沒有消息的時候,要適當sleep一會再重試。

如果對方追問可不可以不用sleep呢?list還有個指令叫blpop,在沒有消息的時候,它會阻塞住直到消息到來。

如果對方追問能不能生產一次消費多次呢?使用pub/sub主題訂閱者模式,可以實現1:N的消息隊列。

如果對方追問pub/sub有什么缺點?在消費者下線的情況下,生產的消息會丟失,得使用專業的消息隊列如rabbitmq等。

如果對方追問redis如何實現延時隊列?我估計現在你很想把面試官一棒打死如果你手上有一根棒球棍的話,怎么問的這么詳細。但是你很克制,然后神態自若的回答道:使用sortedset,拿時間戳作為score,消息內容作為key調用zadd來生產消息,消費者用zrangebyscore指令獲取N秒之前的數據輪詢進行處理。

到這里,面試官暗地里已經對你豎起了大拇指。但是他不知道的是此刻你卻豎起了中指,在椅子背后。

如果有大量的key需要設置同一時間過期,一般需要注意什么?

如果大量的key過期時間設置的過于集中,到過期的那個時間點,redis可能會出現短暫的卡頓現象。一般需要在時間上加一個隨機值,使得過期時間分散一些。

Redis如何做持久化的?

bgsave做鏡像全量持久化,aof做增量持久化。因為bgsave會耗費較長時間,不夠實時,在停機的時候會導致大量丟失數據,所以需要aof來配合使用。在redis實例重啟時,會使用bgsave持久化文件重新構建內存,再使用aof重放近期的操作指令來實現完整恢復重啟之前的狀態。

對方追問那如果突然機器掉電會怎樣?取決于aof日志sync屬性的配置,如果不要求性能,在每條寫指令時都sync一下磁盤,就不會丟失數據。但是在高性能的要求下每次都sync是不現實的,一般都使用定時sync,比如1s1次,這個時候最多就會丟失1s的數據。

對方追問bgsave的原理是什么?你給出兩個詞匯就可以了,fork和cow。fork是指redis通過創建子進程來進行bgsave操作,cow指的是copy on write,子進程創建后,父子進程共享數據段,父進程繼續提供讀寫服務,寫臟的頁面數據會逐漸和子進程分離開來。

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

可以將多次IO往返的時間縮減為一次,前提是pipeline執行的指令之間沒有因果相關性。使用redis-benchmark進行壓測的時候可以發現影響redis的QPS峰值的一個重要因素是pipeline批次指令的數目。

Redis的同步機制了解么?

Redis可以使用主從同步,從從同步。第一次同步時,主節點做一次bgsave,并同時將后續修改操作記錄到內存buffer,待完成后將rdb文件全量同步到復制節點,復制節點接受完成后將rdb鏡像加載到內存。加載完成后,再通知主節點將期間修改的操作記錄同步到復制節點進行重放就完成了同步過程。

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

Redis Sentinal著眼于高可用,在master宕機時會自動將slave提升為master,繼續提供服務。

Redis Cluster著眼于擴展性,在單個redis內存不足時,使用Cluster進行分片存儲。

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2018-03-12 11:22:48

HTTP面試狀態碼

2018-04-20 14:11:27

多線程死鎖樂觀鎖

2018-03-18 08:41:23

大數據互聯網打假

2018-10-31 11:30:28

Redis數據分布式鎖

2011-11-10 15:39:00

復合一體機行情

2022-02-10 09:04:18

RediSDS數據結構

2022-02-25 08:55:19

BitMapRedis面試題

2020-10-27 11:35:31

PythonRedis數據庫

2014-05-13 09:53:02

飛魚星無線云飛魚星

2015-08-18 10:30:15

2021-07-26 14:59:23

面試Redis內存數據庫

2019-07-23 09:20:15

Kafka批量處理客戶端

2018-07-25 14:27:43

Redis數據架構存儲

2009-07-09 10:42:28

2009-08-21 09:02:10

統一通信市場網絡通信

2010-07-20 15:38:16

求職者

2020-07-17 20:35:41

Redis數據庫緩存

2011-11-23 14:28:35

google

2021-12-25 22:31:10

MarkWord面試synchronize

2024-04-30 10:40:11

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲天堂免费 | 国产激情自拍视频 | 国产福利在线视频 | 成人超碰在线 | 97精品国产97久久久久久免费 | 久久国产一区二区 | 一区精品视频 | 国产成人免费视频网站高清观看视频 | 色视频网站 | 美日韩中文字幕 | 二区成人 | 中文字幕视频三区 | 亚洲一区免费视频 | 国产一区二区精品自拍 | 五月激情综合网 | 亚洲国产欧美在线人成 | 日本在线观看网址 | 精品国产91久久久久久 | 精品永久 | 久久综合狠狠综合久久综合88 | 久久久久久久久国产精品 | 精品视频免费 | 国产亚洲成av人片在线观看桃 | 日本一区二区三区精品视频 | 天天夜天天操 | 久久精品欧美一区二区三区麻豆 | 在线观看成人小视频 | 久久精品国产久精国产 | 亚洲精品电影 | 一级在线 | 国产视频中文字幕 | 九九99久久 | h视频在线观看免费 | 欧美99| 网色 | xx视频在线观看 | 亚洲天堂一区二区 | 成人久久18免费网站图片 | 欧美久久久久 | 一本大道久久a久久精二百 国产成人免费在线 | 久久一级免费视频 |