當前位置:
首頁 > 知識 > Redis高性能模型

Redis高性能模型

一、引言

Redis是基於單進程單線程模型的,即對於客戶端的所有讀寫等請求的處理,都由一個主線程串列地處理。因此當多個客戶端同時對一個鍵進行寫操作不會有並發問題。

我們知道Redis Server不僅處理客戶端讀寫等請求,還有一些自身的比較複雜且耗時的操作,如持久化RDB和AOF文件等。Redis為了高效的處理客戶端的事件,並沒有將持久化文件放在主線程裡面進行處理,而是Redis在適當的時機fork子進程來非同步的處理這種任務。

Redis會fork子進程進行處理持久化文件操作,Redis還有一組非同步任務處理線程,用於處理不需要主線程同步處理的工作,即處理一些低級別的事件。

二、Redis單進程單線程

上面我們提到Redis中非同步任務處理線程,其被封裝在BIO組件中。下面我們來看下bio.h,bio.c

從上述的代碼中,可以看到BIO有三種類型的線程,分別處理三種類型的事件:

文件句柄關閉

AOF持久化

空間懶釋放

三、Redis的高性能

在實際應用,我們經常會採用高性能軟體Memcached、Nginx。然而Memcached、Nginx的高性能採用了不同的處理模型,Memcached是單進程多線程模型,Nginx是多進程單線程模型。

Redis的高性能又是如何做到的哪?

我們可以從如下幾個方面分析:

絕大部分操作是基於純粹的內存

相對簡單的數據結構,Redis全程使用hash結構,讀取速度快;還有一些特殊的數據結構,對數據存儲進行了優化,如壓縮表,對數據進行壓縮存儲;再如跳錶,使用有序的數據結構加快讀取的速度

單線程避免不必要的上線文切換及競爭條件

I/O多路復用模型

旨在解決IO的問題。多路I/O復用模型是非阻塞IO,內部實現採用epoll和自己實現的事件分離框架。

其利用select、poll、epoll 可以同時檢測多個流的 I/O 事件的能力,在空閑的時候,會把當前線程阻塞掉,當有一個或多個流有 I/O 事件時,就從阻塞態中喚醒,於是程序就會輪詢一遍所有的流(epoll 是只輪詢那些真正發出了事件的流),並且只依次順序的處理就緒的流,這種做法就避免了大量的無用操作。

「多路」指的是多個網路連接,「復用」指的是復用同一個線程。採用多路 I/O 復用技術可以讓單個線程高效的處理多個連接請求(盡量減少網路 IO 的時間消耗),且 Redis 在內存中操作數據的速度非常快(內存內的操作不會成為這裡的性能瓶頸)。

以上幾點使Redis具有很高的吞吐量。

Redis工作流程

四、小結

Redis單進程單線程模型高性能得益於Redis的非同步化組件,其處理策略是將主要的工作由主線程處理,非主要工作交於子進程和非同步線程組處理;在一定程度上降低了主線程的壓力,進而提高了吞吐量。

非核心邏輯非同步化,提高主進程的處理效率。

五、參考

http://blog.jobbole.com/103012/

點擊展開全文

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 程序源 的精彩文章:

40歲的程序員你該怎麼辦?
使用 C+的StringBuilder 提升 4350% 的性能
Java後台開發精選知識圖譜
Java開發中異常處理的最佳實踐

TAG:程序源 |

您可能感興趣

Garmin Instinct本能系列新品 打造高顏值高性能城市機能風
TARS為Spring Cloud 提供高性能的 RPC 能力
塑造高性能越野性格 APR賦予Volkswagen Atlas 350匹強勁實力
高性能計算Lustre性能優化方案
高性能深度學習支持引擎實戰——TensorRT
華為MateBook D體驗:高顏值高性能 其實還能更優秀
高性能Chromebook曝光
ThinkPad X1 隱士高性能輕薄本:高性能小鋼炮
杉岩統一存儲推出SandStone AgileStore高性能引擎
FAIR開源Tensor Comprehensions,讓機器學習與數學運算高性能銜接
FAIR 開源 Tensor Comprehensions,讓機器學習與數學運算高性能銜接
Netty-整合Protobuf高性能數據傳輸
Moi Composites推出適用於3D列印高性能零件的CFM工藝
Corsair推出高性能PC ATX機箱
MySQL使用JPA+Hibernate的9個高性能技巧
蘋果神秘高性能設備現身Geekbench
Synaptics前總裁Rick Bergman加盟AMD:助力高性能PC、遊戲和半定製業務
Spark Connected為AR/VR發布高性能線充電解決方案The Griffin
Facebook構建高性能Android視頻組件實踐之路
Oculus研發Half Dome原型機揭示致力於開發高性能VR頭顯