日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

面试官:为什么单线程的Redis可以实现高并发访问

發(fā)布時(shí)間:2025/3/15 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 面试官:为什么单线程的Redis可以实现高并发访问 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

背景

上回說到小楓在接受面試官的拷打,所幸第一個問題回答的還不錯,因此面試官對于小楓的初步印象還行。我們接著來看看小楓是怎么和面試官繼續(xù)過招的吧,他還能扛得住面試官幾個連環(huán)炮呢?

面試官考察目的分析

面試官:Redis了解嗎?說說為什么單線程的Redis可以支持高并發(fā)訪問?
面試官考察目的分析:
1、考察候選同學(xué)對于Redis原理的理解程度;
2、考察候選同學(xué)對于網(wǎng)絡(luò)連接的理解程度;

面試題分析

面試官的問題中包含了兩個關(guān)鍵詞,一個是單線程一個是高并發(fā)訪問,因此我們在回答問題的時(shí)候主要從兩個方面出發(fā),先解釋清楚為什么Redis選擇單線程的實(shí)現(xiàn)方式,再解釋清楚為什么Redis能支持高并發(fā)訪問。

小楓:(內(nèi)心OS:根據(jù)面試官的問題,決定從兩方面來進(jìn)行闡述,先整理下回答思路)

從Redis自身特性來說,Redis是基于內(nèi)存的數(shù)據(jù)庫,所以數(shù)據(jù)處理速度非常快。另外它的底層使用了很多效率很高的數(shù)據(jù)結(jié)構(gòu),如哈希表和跳表等。另外Redis從狹義上面來說他是單線程的,網(wǎng)絡(luò)請求解析與數(shù)據(jù)讀寫都是由主線程完成。因此它內(nèi)部就省去了很多多線程訪問共享數(shù)據(jù)資源的繁瑣設(shè)計(jì),同時(shí)也避免了頻繁的線程上下文切換因此減少了多線程的系統(tǒng)開銷。

從IO模型角度來說,Redis使用的是IO多路復(fù)用模型,使得它可以在網(wǎng)絡(luò)IO操作并發(fā)處理數(shù)十萬的客戶端網(wǎng)絡(luò)連接,實(shí)現(xiàn)非常高的網(wǎng)絡(luò)吞吐率。這也是Redis可以實(shí)現(xiàn)高并發(fā)訪問的最主要的原因。

面試官:剛才你提到了IO多路復(fù)用模型,能詳細(xì)說下Redis的IO多路復(fù)用的原理嗎?

小楓:(內(nèi)心OS:當(dāng)時(shí)為了搞清楚這個問題,還特意扒了Redis源碼來看,對于一個Java程序猿來說,看c真的頭暈啊)

好的。首先要明確的是Redis依賴Linux操作系統(tǒng)實(shí)現(xiàn)的高性能IO,剛剛提到的多路復(fù)用IO模型實(shí)際也是傳統(tǒng)阻塞型IO模型演化而來的。在傳統(tǒng)的網(wǎng)絡(luò)IO操作中,accept() 和 recv()函數(shù)都是阻塞型的,一旦發(fā)生阻塞,影響其他網(wǎng)絡(luò)連接。但是在多路復(fù)用IO模型中,可以實(shí)現(xiàn)同時(shí)存在多個socket,內(nèi)核監(jiān)聽socket中的是否有數(shù)據(jù)請求或者連接請求,如果有請求,那么內(nèi)核就會交給Redis進(jìn)行處理,因此Redis的主線程,也就是單線程的Redis可以處理多個IO連接。

整個過程涉及到epoll_create、epoll_ctl以及epoll_wait三個系統(tǒng)調(diào)用,具體的過程大致是這樣的:

1、當(dāng)Redis啟動的時(shí)候,會調(diào)用內(nèi)核的epoll_create創(chuàng)建epoll對象,在這個過程中包含初始化紅黑樹cache以及雙向鏈表,紅黑樹中主要存儲了需要進(jìn)行狀態(tài)監(jiān)控的FD,實(shí)際就是epitem結(jié)構(gòu)體,雙向鏈表中存儲了需要返回給用戶已經(jīng)處于就緒狀態(tài)的事件。

2、調(diào)用epoll_ctl(),通過epoll_ctl注冊要監(jiān)聽的事件類型,將客戶端FD以及需要監(jiān)聽的事件添加到紅黑樹cache中,添加時(shí)進(jìn)行檢查,如果已存在則返回,如果不存在則添加到節(jié)點(diǎn)當(dāng)中,同時(shí)注冊相應(yīng)的事件回調(diào)函數(shù),如果存在連接事件或者讀寫事件,那么就會通過回調(diào)函數(shù)將就緒的事件加入到雙向鏈表中,實(shí)際就是紅黑樹的節(jié)點(diǎn)。

3、Redis調(diào)用epoll_wait獲取已經(jīng)就緒的事件的fired數(shù)組,fire數(shù)組的事件中存儲了就緒的FD以及事件類型,遍歷數(shù)組中的事件,根據(jù)事件類型處理函數(shù)繼續(xù)后續(xù)的處理。如果是讀事件那就調(diào)用讀事件處理函數(shù)進(jìn)行處理。對于Redis來說它只要關(guān)注鏈表中有沒有數(shù)據(jù)就好,有數(shù)據(jù)就會進(jìn)行讀取,沒有數(shù)據(jù)則阻塞超過timeout之后再進(jìn)行調(diào)用。在大多數(shù)情況下,返回的數(shù)組中包含的事件并不多。通過這樣的設(shè)計(jì),Redis不需要一直輪訓(xùn)檢查到底有沒有實(shí)際的請求發(fā)生,避免了CPU資源的浪費(fèi)。因此及時(shí)是單線程的Redis,借助于epoll機(jī)制,它也可以實(shí)現(xiàn)數(shù)十萬連接的并發(fā)處理。

面試官:(內(nèi)心OS:小伙子回答的不錯,看來常見的面試題難不倒你啊,那么我就來問問陷阱題吧,嘿嘿)

有道無術(shù),術(shù)可成;有術(shù)無道,止于術(shù)

歡迎大家關(guān)注Java之道公眾號

好文章,我在看??

總結(jié)

以上是生活随笔為你收集整理的面试官:为什么单线程的Redis可以实现高并发访问的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产一区精品在线观看 | 国产精品久久久久电影 | 国产伦精品一区二区三区高清 | 日视频| 自拍视频第一页 | 色二区| 国产a三级 | 久久99国产精品久久99 | 一区二区三区久久久 | www.操| 欧洲精品无码一区二区 | 日韩精品在线一区二区 | 成人污污视频 | 91色国产 | 国产高清免费在线播放 | 最近最新mv字幕观看 | 国产成人无码a区在线观看视频 | 亚洲一区二区三区四区五区午夜 | 日韩1区2区3区 | 亚洲精品乱码 | 国产一级黄色录像 | 国模私拍一区二区三区 | 青青国产在线 | 蜜臀一区二区三区 | 小泽玛利亚一区二区三区视频 | 7777久久亚洲中文字幕 | 国产av一区二区三区 | 男ji大巴进入女人的视频 | 久久精品这里只有精品 | www.精品在线| 视频二区三区 | 免费在线看黄色片 | 国产精品无遮挡 | 精品三级网站 | 亚洲草逼视频 | 国产精品乱轮 | 在线中文字幕日韩 | 欧美一级二级三级视频 | 亚洲亚裔videos黑人hd | 精品丝袜一区 | 网红日批视频 | 爱爱激情网 | 青青操免费在线视频 | 欧美xxxxx自由摘花 | 欧美成人精品一区二区三区在线观看 | 国产成人精品一区二区三区视频 | 欧洲av片| 综合久久久 | 国产综合视频 | 成人做爰66片免费看网站 | 欧美成人午夜免费视在线看片 | 精品亚洲乱码一区二区 | 日韩理论视频 | 99精品在线免费观看 | 又色又爽又黄无遮挡的免费视频 | 在线亚洲区| 一区二区三区四区av | 三上悠亚中文字幕在线播放 | porn国产| 99re6这里有精品热视频 | 性无码专区无码 | 欧美三级又粗又硬 | 91嫩草香蕉| 奇米影视第四色7777 | 全部孕妇毛片丰满孕妇孕交 | 久草欧美视频 | av先锋资源网 | 欧美日韩视频无码一区二区三 | 偷拍视频一区二区 | 在线观看免费中文字幕 | 国模人体一区二区 | 精品欧美一区二区久久久 | www.色午夜 | 中文字幕人成乱码熟女香港 | 日韩精品一区二区不卡 | 午夜亚洲国产 | 中文字幕 国产 | 日韩欧美高清在线视频 | 在线观看免费视频一区二区 | 欧美精品在线视频观看 | 亚洲精品久久久久久久久久久久久 | 97av在线视频 | 8x8ⅹ成人永久免费视频 | 亚洲欧美日韩国产 | 日本黄网免费 | 中日韩欧美在线观看 | 欧美人一级淫片a免费播放 西方av在线 | 亚洲一区二区三区蜜桃 | av片观看| 成人视品 | 国产亚洲欧美精品久久久www | 国精品一区 | 国产成人精品无码免费看81 | 精品人妻一区二区三区四区不卡 | 久久久免费观看 | 天天色棕合合合合合合合 | 成人av激情 | 久久精品在线观看 | 熟女少妇内射日韩亚洲 |