国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Redis奪命十二問,你能扛到第幾問?

開發 架構
今天我們就來模擬一下面試官在Redis這個話題上是如何一步一步深入,全面考察候選人對于Redis的掌握情況。

Redis是面試中繞不過的檻,只要在簡歷中寫了用過Redis,肯定逃不過。今天我們就來模擬一下面試官在Redis這個話題上是如何一步一步深入,全面考察候選人對于Redis的掌握情況。

小張:

面試官,你好。我是來參加面試的。

面試官:

你好,小張。我看了你的簡歷,熟練掌握Redis,那么我就隨便問你幾個Redis相關的問題吧。首先我的問題是,Redis是單線程還是多線程呢?

小張:

Redis不同版本之間采用的線程模型是不一樣的,在Redis4.0版本之前使用的是單線程模型,在4.0版本之后增加了多線程的支持。

在4.0之前雖然我們說Redis是單線程,也只是說它的網絡I/O線程以及Set 和 Get操作是由一個線程完成的。但是Redis的持久化、集群同步還是使用其他線程來完成。

4.0之后添加了多線程的支持,主要是體現在大數據的異步刪除功能上,例如 unlink key、flushdb async、flushall async 等

面試官:

回答的很好,那為什么Redis在4.0之前會選擇使用單線程?而且使用單線程還那么快?

小張:

選擇單線程個人覺得主要是使用簡單,不存在鎖競爭,可以在無鎖的情況下完成所有操作,不存在死鎖和線程切換帶來的性能和時間上的開銷,但同時單線程也不能完全發揮出多核CPU的性能。

至于為什么單線程那么快我覺得主要有以下幾個原因:

  1. Redis 的大部分操作都在內存中完成,內存中的執行效率本身就很快,并且采用了高效的數據結構,比如哈希表和跳表。
  2. 使用單線程避免了多線程的競爭,省去了多線程切換帶來的時間和性能開銷,并且不會出現死鎖。
  3. 采用 I/O 多路復用機制處理大量客戶端的Socket請求,因為這是基于非阻塞的 I/O 模型,這就讓Redis可以高效地進行網絡通信,I/O的讀寫流程也不再阻塞。

面試官:

不錯,那Redis是如何實現數據不丟失的呢?

小張:

Redis數據是存儲在內存中的,為了保證Redis數據不丟失,那就要把數據從內存存儲到磁盤上,以便在服務器重啟后還能夠從磁盤中恢復原有數據,這就是Redis的數據持久化。Redis數據持久化有三種方式。

  • AOF 日志(Append Only File,文件追加方式):記錄所有的操作命令,并以文本的形式追加到文件中。
  • RDB 快照(Redis DataBase):將某一個時刻的內存數據,以二進制的方式寫入磁盤。
  • 混合持久化方式:Redis 4.0 新增了混合持久化的方式,集成了 RDB 和 AOF 的優點。

面試官:

那你分別說說 AOF和 RDB的實現原理吧。

小張:

AOF采用的是寫后日志的方式,Redis先執行命令把數據寫入內存,然后再記錄日志到文件中。AOF日志記錄的是操作命令,不是實際的數據,如果采用AOF方法做故障恢復時需要將全量日志都執行一遍。


RDB采用的是內存快照的方式,它記錄的是某一時刻的數據,而不是操作,所以采用RDB方法做故障恢復時只需要直接把RDB文件讀入內存即可,實現快速恢復。

面試官:

你剛提到了AOF采用的是 “寫后日志” 的方式,我們平時用的MySQL則采用的是 “寫前日志”,那 Redis為什么要先執行命令,再把數據寫入日志呢?

小張:額頭開始冒汗,問的是些啥問題呀。。。

額,這個主要是由于Redis在寫入日志之前,不對命令進行語法檢查,所以只記錄執行成功的命令,避免出現記錄錯誤命令的情況,而且在命令執行后再寫日志不會阻塞當前的寫操作。

面試官:

那 后寫日志又有什么風險呢?

小張:

我... 這個我不會。

面試官:

好吧,后寫日志主要有兩個風險可能會發生:

  • 數據可能會丟失:如果 Redis 剛執行完命令,此時發生故障宕機,會導致這條命令存在丟失的風險。
  • 可能阻塞其他操作:AOF 日志其實也是在主線程中執行,所以當 Redis 把日志文件寫入磁盤的時候,還是會阻塞后續的操作無法執行。

我還有個問題是 RDB做快照時會阻塞線程嗎?

小張:

Redis 提供了兩個命令來生成 RDB 快照文件,分別是 save 和 bgsave。save 命令在主線程中執行,會導致阻塞。而 bgsave 命令則會創建一個子進程,用于寫入 RDB 文件的操作,避免了對主線程的阻塞,這也是 Redis RDB 的默認配置。

面試官:

RDB 做快照的時候數據能修改嗎?

小張:

save是同步的會阻塞客戶端命令,bgsave的時候是可以修改的。

面試官:

那Redis是怎么解決在bgsave做快照的時候允許數據修改呢?

小張:(你咋還問。。。我?不會啊!)

額,這個我不太清楚...


面試官:

這里主要是利用bgsave的子線程實現的,具體操作如下:

  • 如果主線程執行讀操作,則主線程和 bgsave 子進程互相不影響;
  •  如果主線程執行寫操作,則被修改的數據會復制一份副本,然后 bgsave子進程會把該副本數據寫入 RDB 文件,在這個過程中,主線程仍然可以直接修改原來的數據。


要注意,Redis 對 RDB 的執行頻率非常重要,因為這會影響快照數據的完整性以及 Redis 的穩定性,所以在 Redis 4.0 后,增加了 AOF 和 RDB 混合的數據持久化機制: 把數據以 RDB 的方式寫入文件,再將后續的操作命令以 AOF 的格式存入文件,既保證了 Redis 重啟速度,又降低數據丟失風險。

小張:

學到了學到了。

面試官:

那你再跟我說說Redis如何實現高可用吧?

小張:

Redis實現高可用主要有三種方式:主從復制、哨兵模式,以及 Redis 集群。

主從復制

將從前的一臺 Redis 服務器,同步數據到多臺從 Redis 服務器上,即一主多從的模式,這個跟MySQL主從復制的原理一樣。

哨兵模式

使用 Redis 主從服務的時候,會有一個問題,就是當 Redis 的主從服務器出現故障宕機時,需要手動進行恢復,為了解決這個問題,Redis 增加了哨兵模式(因為哨兵模式做到了可以監控主從服務器,并且提供自動容災恢復的功能)。

Redis Cluster(集群)

Redis Cluster 是一種分布式去中心化的運行模式,是在 Redis 3.0 版本中推出的 Redis 集群方案,它將數據分布在不同的服務器上,以此來降低系統對單主節點的依賴,從而提高 Redis 服務的讀寫性能。


面試官:

使用哨兵模式在數據上有副本數據做保證,在可用性上又有哨兵監控,一旦master宕機會選舉salve節點為master節點,這種已經滿足了我們的生產環境需要,那為什么還需要使用集群模式呢?

小張:

額,哨兵模式歸根節點還是主從模式,在主從模式下我們可以通過增加salve節點來擴展讀并發能力,但是沒辦法擴展寫能力和存儲能力,存儲能力只能是master節點能夠承載的上限。所以為了擴展寫能力和存儲能力,我們就需要引入集群模式。

面試官:

集群中那么多Master節點,redis cluster在存儲的時候如何確定選擇哪個節點呢?

小張:

這應該是使用了某種hash算法,但是我不太清楚。。。

面試官:

那好,今天的面試就到這里吧,你先回去等我們的面試通知。

小張:

好的,謝謝面試官,你能告訴我redis cluster怎么實現節點選擇的嗎?

面試官:

Redis Cluster采用的是類一致性哈希算法實現節點選擇的,至于什么是一致性哈希算法你自己回去看看。

Redis Cluster將自己分成了16384個Slot(槽位),哈希槽類似于數據分區,每個鍵值對都會根據它的 key,被映射到一個哈希槽中,具體執行過程分為兩大步。

  • 根據鍵值對的 key,按照 CRC16 算法計算一個 16 bit 的值。
  • 再用 16bit 值對 16384 取模,得到 0~16383 范圍內的模數,每個模數代表一個相應編號的哈希槽。

每個Redis節點負責處理一部分槽位,加入你有三個master節點 ABC,每個節點負責的槽位如下:

這樣就實現了cluster節點的選擇。

責任編輯:龐桂玉 來源: Hollis
相關推薦

2022-04-01 12:40:13

MySQL數據庫

2025-11-26 08:21:31

2021-01-19 05:24:36

ThreadLocal線程編程

2021-07-21 09:15:27

MySQL數據庫面試

2022-03-25 09:01:36

Spring循環依賴面試

2022-05-14 21:19:22

ThreadLocaJDKsynchroniz

2021-10-26 15:56:57

kafka數據平臺,

2024-03-13 13:56:11

openFeignHttp服務調用

2023-02-26 02:00:36

OpenFeign接口實現類

2025-08-26 02:22:00

2020-09-30 18:19:27

RedisJava面試

2021-02-02 08:21:28

網絡面試通信

2023-03-08 09:03:55

2023-04-26 07:40:34

MySQL索引類型存儲

2021-07-30 16:16:54

網絡面試TCP

2020-09-02 07:00:42

ZooKeeper分布式

2023-04-26 09:16:17

2021-01-26 05:07:53

WindowViewWMS

2022-07-10 20:51:25

IT數字化K8S

2009-05-04 16:09:04

點贊
收藏

51CTO技術棧公眾號

亚洲精品91美女久久久久久久| 欧美日韩亚洲在线| 一区二区三区短视频| 特级全黄一级毛片| 国产成年精品| 欧美国产日韩a欧美在线观看 | 久久青青草原一区二区| 亚洲一区日韩精品中文字幕| 亚洲欧洲午夜| 秋霞成人午夜伦在线观看| 国产精品白丝av| 日本一区二区久久| 精品一区二区三区四区| 中文字幕一区二区三三| 综合激情五月婷婷| 欧美成人一区二免费视频软件| 中文字幕久久一区| 另类一区二区三区| 日韩大陆毛片av| 成视频免费观看在线看| 欧美系列在线观看| 在线观看免费黄视频| 91国在线观看| 国家队第一季免费高清在线观看| 色一情一乱一乱一91av| 欧美69xxxxx| 欧美无砖专区一中文字| 777电影在线观看| 欧美日韩在线三区| 国产成人无吗| 精品国产sm最大网站免费看| av手机在线观看| 一区二区成人av| 亚洲性视频在线| 国产精品一区二区三区成人| 欧美日韩国产免费观看| 日韩精品一线二线三线| 成人午夜视频网站| 男人艹女人网站| 色综合久久久久久久久| 免费在线国产视频| 日韩专区在线观看| 伊人久久大香线蕉| 国产精品12| 国产麻豆精品95视频| 美女黄色片视频| 色婷婷亚洲综合| 少妇在线看www| 欧美极品少妇xxxxⅹ免费视频| 国产成人黄色| 亚洲最大的成人网| 久久精品国产精品亚洲综合| 黄色动漫在线免费看| 亚洲国产精品一区二区久久| 午夜小视频福利在线观看| 在线播放国产精品| 亚洲欧美日本伦理| 亚洲**2019国产| 久久久亚洲人| 亚洲一区不卡在线| 国产亚洲美州欧州综合国| 深夜爽爽视频| 欧美v日韩v国产v| 视频免费一区二区| 91在线观看欧美日韩| 国产一区二区女| 米奇777在线影院线| 欧美一区二区视频在线观看 | 亚洲国产成人精品女人久久久 | 欧美绝顶高潮抽搐喷水合集| 国产精品麻豆免费版| 成人免费视频视频在线观看免费| 免费观看羞羞视频网站| 亚洲成人aaa| 精品一区二区三区中文字幕老牛| 亚洲狠狠婷婷综合久久久| 亚洲色图视频网站| 新版的欧美在线视频| 91九色国产视频| 99国产精品99久久久久久| 最新电影电视剧在线观看免费观看| 久久影院资源网| 欧美一级久久| 粉嫩粉嫩芽的虎白女18在线视频| 亚洲图片在区色| 亚洲国产精品第一区二区三区| caopor在线视频| 国产精品三级a三级三级午夜| 国产高清不卡一区| 成人h猎奇视频网站| 成人vr资源| 热99这里只有精品| 国产亚洲欧美日韩日本| 亚洲午夜精品久久| 国产成人午夜片在线观看高清观看| 成人午夜激情影院| 国内精品卡一卡二卡三新区| 精品亚洲国产视频| 久久综合国产| www.爱色av.com| 亚洲成人教育av| 欧美精品一卡| eeuss鲁片一区| 色偷偷偷综合中文字幕;dd| 国产欧美91| 亚洲一区二区三区成人| 日韩伦理福利| 99re6这里有精品热视频| 精品少妇一区二区三区日产乱码| 亚洲国产一区二区三区网站| 精品综合久久久| 国产在线国偷精品产拍免费yy| 日韩免费高清在线| 久久视频在线直播| 美国一区二区三区在线播放| 日本福利片免费看| 欧美大片一区二区| 日韩精品亚洲aⅴ在线影院| 久久久综合香蕉尹人综合网| 麻豆精品网站| 国产黄色特级片| 五月激情六月综合| 最新av网站在线观看 | 亚洲天堂中文字幕| 午夜不卡一区| 免费的一级黄色片| 欧美tk—视频vk| 午夜影院日韩| 国产精品va在线观看视色| 国产精品免费区二区三区观看| 色久优优欧美色久优优| 亚洲一区二区| 国产高清视频免费最新在线| 91精品网站| 91精品国产综合久久国产大片| 国产精品亚洲综合色区韩国| 国产成人在线视频免费观看| 鲁鲁视频www一区二区| 欧美成人伊人久久综合网| 久久精品国产一区二区三区免费看| 国产精品25p| 9久久9毛片又大又硬又粗| 中文字幕欧美日韩在线| 久久一日本道色综合| 欧美美女在线直播| 在线观看污网站| 久久久精品国产一区二区三区| 精品国产1区2区3区| 国产高清无密码一区二区三区| 免费污视频在线一区| www.xxx亚洲| 国产精品久久久一区| 欧美在线观看你懂的| 欧美aaaaa成人免费观看视频| 欧美大片免费| 9久久婷婷国产综合精品性色 | 国产在线播放不卡| 亚洲天堂免费在线观看视频| 亚洲综合久久av| 色婷婷精品视频| 午夜黄色在线观看| 精品国产乱码久久久久久108| 欧美一区二区视频网站| 久久国产精品99久久久久久老狼| 国模冰冰炮一区二区| 激情亚洲综合网| 91九色蝌蚪成人| 亚洲男人的天堂在线| 国产精品国产自产拍高清av| 欧美日本免费| 午夜日韩成人影院| 婷婷色播视频| 精品高清视频| 不卡中文字幕av| 欧美性色黄大片| 92精品国产成人观看免费| 99久久99久久精品国产片果冰| caoporn视频在线| 91骚色在线| 日本不卡一区二区三区在线观看| 久久国产精品久久久久久| 欧美视频中文字幕在线| 久久精品久久综合| 国产一区二区观看| 极品美鲍一区| 国产精品㊣新片速递bt| 久久www视频| 51精品国产人成在线观看 | 欧美日韩国产中文字幕在线| 少妇熟女一区二区| 国产精品视频色| 亚洲欧美中文在线视频| 亚洲第一av色| 丁香五精品蜜臀久久久久99网站| 日韩国产一区二区三区| 三级成人在线| www 日韩| 久久午夜剧场| 国产av国片精品| 欧美重口乱码一区二区|