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

這些常見"刁鉆"的Redis面試問題必看

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

導讀:在程序員面試過程中Redis相關的知識是常被問到的話題。作為一名在互聯網技術行業打擊過成百上千名的資深技術面試官,本文作者總結了面試過程中經常問到的問題。十分值得一讀。

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

[[237843]]

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實例重啟時,優先使用aof來恢復內存的狀態,如果沒有aof日志,就會使用rdb文件來恢復。

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

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

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進行分片存儲。

作者簡介:錢文品(老錢),互聯網分布式高并發技術十年老兵,目前任掌閱科技資深后端工程師。熟練使用 Java、Python、Golang 等多種計算機語言,開發過游戲,制作過網站,寫過消息推送系統和MySQL 中間件,實現過開源的 ORM 框架、Web 框架、RPC 框架等

責任編輯:未麗燕 來源: 高可用架構
相關推薦

2018-09-05 12:20:09

數據庫Redis面試題

2013-12-03 10:11:41

LinuxLinux面試題

2013-05-22 10:04:18

Hibernate面試問題

2021-02-10 07:38:43

Node.js后端框架

2023-09-13 08:37:56

程序員面試catch

2019-07-15 11:04:37

Spring BootTomcat開發

2009-03-03 09:33:13

面試ORACLE

2025-02-19 08:13:31

2013-09-30 09:08:30

面試創業

2020-07-29 10:20:28

Redis數據庫字符串

2022-01-14 08:12:39

瀏覽器面試問http

2023-02-10 16:36:30

機器學習評估指標

2013-05-29 10:47:50

Android開發Java多線程java面試題

2022-08-28 20:35:52

三次握手四次揮手TCP

2020-07-17 20:35:41

Redis數據庫緩存

2020-03-03 09:43:21

軟件數據庫Java

2019-12-17 18:11:09

跳槽那些事兒機器學習人工智能

2020-03-17 14:53:31

JavaScript面試問題前端

2012-10-18 15:10:51

前端工程師面試題WEB開發

2020-03-23 09:56:50

軟件測試面試技術
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲最色网站 | 国产 日韩 欧美 在线 | 成人亚洲一区 | 亚洲午夜精品一区二区三区他趣 | 波多野结衣二区 | 国产精品久久一区二区三区 | 精品综合久久久 | 久久成人高清视频 | 国产精品久久亚洲 | 日本不卡免费新一二三区 | 91久久电影| 久热电影| 久久久久亚洲精品 | 精品国产一区二区三区av片 | 亚洲一一在线 | 高清国产午夜精品久久久久久 | 国产一区 | 亚洲一区二区高清 | 国产婷婷色综合av蜜臀av | 99热播精品 | 伊人狠狠干| 国产乱码精品一品二品 | 国产视频中文字幕在线观看 | 亚洲午夜精品视频 | 日韩一区二区不卡 | 日本久久一区 | 久久国产三级 | 91精品国产乱码久久久久久 | 成人久久18免费 | av在线免费网站 | 欧美视频精品 | 亚洲精品在线免费观看视频 | 综合网伊人 | 成人福利网站 | 中文字幕成人av | 国产精品欧美一区二区 | 亚洲欧洲在线视频 | 久草资源在线视频 | 91国在线| 欧美精品99 | 爱爱免费视频 |