一、redis客戶端
redisserver結構中儲存了所有客戶端的狀態資訊。
struct redisserver;
命令client list
可以列出目前所有連線到伺服器的客戶端。
命令client setname < name >
可以給客戶端設定乙個名字。
偽客戶端
由於伺服器必須接收來自客戶端的命令以執行操作,因此在沒有使用者客戶端連線的情況下,伺服器要想執行一些指令(lua指令碼或者aof檔案中的指令),就需要給自己建立乙個客戶端。
(1) lua指令碼的偽客戶端
當執行lua指令碼中的redis命令的時候,伺服器會建立乙個偽客戶端,這個偽客戶端再伺服器啟動的時候就自動建立了,當伺服器關閉時,才會關閉。
(2) aof檔案的偽客戶端
伺服器載入aof檔案時,會建立乙個偽客戶端用於執行aof檔案中的redis命令,載入完成後就關閉這個偽客戶端
二、redis伺服器
redis伺服器與多個redis客戶端建立網路連線,處理客戶端傳送的命令請求。
1、客戶端傳送請求給伺服器
下圖是乙個客戶端傳送請求給伺服器的情況:
當使用者傳送下指令時:
set key value
客戶端在傳送之前會將其轉換成下面的協議格式:
*3\r\n$3\r\nset\r\n$3\rnkey\r\n$5\r\nvalue\r\n
然後通過網路傳送給伺服器。
2、伺服器初始化過程
1、初始化伺服器狀態
2、載入伺服器配置
3、初始化伺服器資料結構
4、還原資料庫狀態
5、執行事件迴圈
Redis 客戶端和伺服器
客戶端的資料結構 typedef struct redisclient redisclient 名字 name 標誌值 flags 指向客戶端正在使用的資料庫的指標,以及該資料庫的號碼 當前要執行的命令 命令的引數 命令的個數,以及指向命令實現函式的指標 輸入緩衝區 querybuf 輸出緩衝區 複...
C 客戶端和伺服器端
1 c s 客戶端應用程式 winform wpf 平級 資料是存放在其他的電腦上或伺服器上 資料的加工是在使用者的電腦上執行的,會對使用者的電腦配置有所要求 2 b s 網頁端應用程式 asp.net 統稱 asp.net webform asp.net mvc 平級 使用者傳送乙個請求到iis伺...
客戶端和伺服器資料互動
客戶端一次把資料取出,還是分多次來取?有的人說把資料一次從資料庫取到客戶端然後在客戶端任意處理效率會高。有的人說把一次性把所有資料取到客戶端很耗時且資料大多沒有用處最好分次處理。其實這兩個說法並不矛盾,只是他們實用的方面是不同的。如果資料最不大,但是可能會和伺服器發生多次互動,最好一次把資料取出到客...