久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

redis為什么用單線程

155次閱讀
沒有評論

共計 1059 個字符,預計需要花費 3 分鐘才能閱讀完成。

本篇內容主要講解“redis 為什么用單線程”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓丸趣 TV 小編來帶大家學習“redis 為什么用單線程”吧!

1. 基本概念

什么是 redis 的單線程(核心功能在單線程上,并不是所有功能)

持久化

異步刪除

集群數據同步

redis 的網絡 IO 和鍵值對讀寫是由一個線程完成的(redis 的核心服務)

redis 的其他功能由額外線程完成

【相關推薦:Redis 視頻教程】

2.redis 為什么用單線程

多線程的開銷

被多線程同時訪問共享資源,比如共享的數據結構

為了保證線程安全,導致性能的犧牲

粗粒度的鎖導致所有串行,系統的吞吐率隨著線程的增加而增加

使用多線程可以增加系統吞吐率(每個請求),增加系統擴展性

無限的增加線程數,導致吞吐量下降

因此為了節省并發資源的管理,redis 使用單線程,保證所有操作串行化

3. 單線程的 redis 為什么快

redis 大部分操作都在內存上 + 高效的數據結構

redis 采用多路復用機制,在網絡中處理大量客戶端請求,實現高吞吐率

4.socket

socket 通信過程(網絡 IO 處理 + 鍵值對讀寫 + 網絡 IO 處理)

SimpleKV 為了處理一個 Get 請求

需要監聽客戶端請求(bind/listen)

和客戶端(代碼)建立連接(accept)

從 socket 中讀取請求(recv)

解析客戶端發送請求(parse)

根據請求類型讀取鍵值數據(get)

最后給客戶端返回結果,即向 socket 中寫回數據(send)

潛在的阻塞點

accept() 未能成功建立連接時,會一直阻塞 \

recv() 從客戶端讀取數據時,會一直阻塞 \

socket 的非阻塞模式

保證 Redis 線程,既不會像基本 IO 模型中一直在阻塞點等待,也不會導致 Redis 無法處理實際到達的連接請求或數據

Linux 中的 IO 多路復用機制

5. 多路復用

Linux 中的 IO 多路復用機制指一個線程處理多個 IO 流,select/poll

在單線程下,同時存在監聽多個套接字和已連接套接字

具體實現

首先將事件放入事件隊列,無需潤徐請求是否實際發生,避免 CPU 資源浪費

根據相應的事件執行響應的操作

FD 是多個套接字

Redis 使用 epoll 機制,讓內核監聽套接字

Redis 可以和多個客戶端連接并處理請求,從而提升并發性

select/epoll 提供了基于事件的回調機制,針對不同的事件調用對應的處理函數

到此,相信大家對“redis 為什么用單線程”有了更深的了解,不妨來實際操作一番吧!這里是丸趣 TV 網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-27發表,共計1059字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 茂名市| 中宁县| 云龙县| 泸定县| 孟州市| 广安市| 夹江县| 肃南| 鄂温| 永州市| 定远县| 双辽市| 绥宁县| 定西市| 石景山区| 阳山县| 新田县| 罗源县| 久治县| 定安县| 抚顺市| 新化县| 科尔| 兴仁县| 汕尾市| 富宁县| 呼伦贝尔市| 巴楚县| 绩溪县| 诸城市| 乐平市| 庆安县| 吴川市| 惠来县| 上栗县| 博爱县| 巨鹿县| 房山区| 台南市| 廉江市| 阳信县|