W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
我們之前說過要實現(xiàn) Memcached 的 GET,SET,和 DELETE 操作。我們只關(guān)注這些,但是在 memcached 協(xié)議中有一個通用的結(jié)構(gòu),只有少數(shù)參數(shù)改變?yōu)榱烁淖円粋€請求或響應(yīng)的意義。這意味著您可以輕松地擴展實現(xiàn)添加其他命令。一般協(xié)議有 24 字節(jié)頭用于請求和響應(yīng)。這個頭可以分解如下表14.1中。
Table 14.1 Sample Memcached header byte structure
Field | Byte offset | Value |
---|---|---|
Magic | 0 | 0x80 用于請求 0x81 用于響應(yīng) |
OpCode | 1 | 0x01...0x1A |
Key length | 2 和 3 | 1...32,767 |
Extra length | 4 | 0x00, x04, 或 0x08 |
Data type | 5 | 0x00 |
Reserved | 6 和 7 | 0x00 |
Total body length | 8-11 | 所有 body 的長度 |
Opaque | 12-15 | 任何帶帶符號的 32-bit 整數(shù); 這個也包含在響應(yīng)中,因此更容易將請求映射到響應(yīng)。 |
CAS | 16-23 | 數(shù)據(jù)版本檢查 |
注意每個部分使用的字節(jié)數(shù)。這告訴你接下來你應(yīng)該用什么數(shù)據(jù)類型。例如,如果字節(jié)的偏移量只是 byte 0,那么舊使用一個 Java byte來表示它;如果它是6和7(2字節(jié)),你使用一個Java short;如果它是 12-15(4字節(jié)),你使用一個Java int,等等。
Figure 14.2 Real-world Memcached request and response headers
在圖14.2中,高亮顯示的第一部分代表請求打到 Memcached (只顯示請求頭),在這種情況下是告訴 Memcached 來 SET 鍵是“a”而值是“abc”。第部分是響應(yīng)。
突出顯示的部分中的每一行代表4個字節(jié);因為有6行,這意味著請求頭是由24個字節(jié),正如我們之前說的?;仡櫛?4.1中,您可以頭在一個真正的請求中看到頭文件中的信息。現(xiàn)在,這是所有你需要知道的關(guān)于 Memcached 二進制協(xié)議。在下一節(jié)中,我們需要看看多么我們可以開始制作 Netty 這些請求。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: