天天看點

淺談Redis線程模型1.Redis簡介2.Redis線程模型3.基于Redis線程模型的宏觀工作流程

1.Redis簡介

1.1簡介

REmote DIctionary Server(Redis) 是一個由 Salvatore Sanfilippo 寫的 key-valu存儲系統,是跨平台的非關系型資料庫。Redis 是一個開源的使用 ANSI C 語言編寫、遵守 BSD 協定、支援網絡、可基于記憶體、分布式、可選持久性的鍵值對(Key-Value)存儲資料庫,并提供多種語言的 API。Redis 通常被稱為資料結構伺服器,因為值(value)可以是字元串(String)、哈希(Hash)、清單(list)、集合(sets)和有序集合(sorted sets)等類型。

2.特征

1.NoSQL

2.分布式緩存中間件

3.key-value

4.提供海量的資料存儲通路

5.所有資料放在記憶體中,通路資料非常快

6.非關系型,分布式,支援水準擴充,開源

2.Redis線程模型

淺談Redis線程模型1.Redis簡介2.Redis線程模型3.基于Redis線程模型的宏觀工作流程

redis線程模型采用的是單線程模型,因為它是基于一個檔案事件處理模型,而且該檔案處理模型是單線程是以redis也是單線程的。那麼這個檔案事件處理器概含那些部分呢,它又是如何工作的呢。

檔案事件處理模型如上圖主要包含以下幾部分:

1.Socket,一個redis伺服器可以被多個redis用戶端連接配接,這裡的socket就代表着我們每一個連接配接着redis伺服器的用戶端,負責監聽是以用戶端的請求。

2.I/O多路複用器,伺服器既然能被多個用戶端連接配接,那麼難免會出現請求并發的情況,I/O多路複用器負責監聽各個socket,每當監聽到socket的時候會将該socket放入一個隊列,進而就将多用戶端并發的這種請求轉變成了隊列這種串形方式

3.檔案事件配置設定器,負責将I/O隊列裡的事件讀取處理,然後分派給各個處理器進行處理。

4.事件處理器,負責處理對應的事件;事件處理器又包含3部分:連接配接應答處理器,指令請求處理器,指令回複處理器。

5.AE_Readable事件,當用戶端連接配接到伺服器,被socket監聽到就會産生一個對應        AE_Readable事件。

6.AE_Writeable事件,當檔案事件配置設定器配置設定事件到具體事件處理器事就會産生對        對應的AE_Writeable事件。

3.基于Redis線程模型的宏觀工作流程

1.當redis用戶端向伺服器端發起一個寫操作請求,Server Socket監聽到請求後會産        生一個AE_Readable事件。

2.I/O多路複用器監聽的socket後,将其放入隊列中。

3.檔案事件配置設定器從隊列讀取到事件後,将該事件配置設定給連接配接應答處理器,這時候會産生一個與用戶端映射的socket,并将該socket與指令請求處理器綁定,這時候如果用戶端請求某些操作時,例如本次請求寫操作,這時候指令請求處理器就會執行對應的指令。

4.指令請求處理器處理完指令後,會将該socket與指令回複處理器綁定,并且會将請求結果傳回給用戶端。