《Redis設計與實現》第十三章 客戶端

通過使用io多路複用技術實現的文件處理器,redis單線程單進程的方式來處理命令請求,並與多個客戶端進行網絡通信。
每個客戶端都有一個redisClient結構,保存當前客戶端消息。

-w715
-w609

13.1 客戶端屬性

通用屬性與特定功能屬性。

13.1.1 套接字描述符

-w452
僞客戶端fd爲-1.

13.1.2 名字

在默認情況下,一個連接到服務器的客戶端是沒有名字的。
使用client setname設置名字。
-w309

13.1.3 標誌

-w327
記錄角色以及所處狀態
-w522

13.1.4 輸入緩衝區

-w729
最大不能超過1GB否則會關閉
保存客戶端發送的命令請求

13.1.5 命令與命令參數

-w720

13.1.6 命令的實現函數

-w692

13.1.7 輸出緩衝區

服務端回覆的結果保存在此處
-w376

13.1.8 身份驗證

-w717

13.1.9 時間

-w780

13.2 客戶端的創建與關閉

-w683

13.2.2 關閉普通客戶端

-w707

13.2.3 Lua腳本的僞客戶端

-w758

13.2.4 AOF文件的僞客戶端

-w720

13.3 重點回顧

  • 服務器狀態結構使用clients鏈表連接多個客戶端狀態,新添加的客戶端狀態會被放到鏈表末尾。
  • flags屬性使用不同標誌來表明客戶端的角色以及所處狀態(阻塞、讀取、等待回覆等等)
  • 輸入緩衝區記錄了客戶端發送的命令請求、最大1GB
  • 命令的參數和參數個數會被記錄argv和argc裏面。
  • 固定大小緩衝區16KB最大和可變大小緩衝區
  • 輸出緩衝區有兩種 一個是超出了硬性限制 like關閉,如果在一段時間內也超過軟性限制 也被關閉。
  • 當客戶端連接上服務器時,會創建相應客戶端。
  • 處理Lua腳本
  • 載入AOF時會創建僞客戶端(走套接字)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章