Netty 了解Memcached二進制協(xié)議

2018-08-08 11:02 更新

我們之前說過要實現(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

FieldByte offsetValue
Magic00x80 用于請求 0x81 用于響應(yīng)
OpCode10x01...0x1A
Key length2 和 31...32,767
Extra length40x00, x04, 或 0x08
Data type50x00
Reserved6 和 70x00
Total body length8-11所有 body 的長度
Opaque12-15任何帶帶符號的 32-bit 整數(shù); 這個也包含在響應(yīng)中,因此更容易將請求映射到響應(yīng)。
CAS16-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%2014

  1. 請求(只有顯示頭)
  2. 響應(yīng)

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 這些請求。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號