摘要:用來(lái)了解一下通訊協(xié)議原文地址用來(lái)了解一下通訊協(xié)議都有那么多包來(lái)支撐你使用,那你是否有想過(guò)有了服務(wù)端,有了客戶端,他們倆是怎樣通訊,又是基于什么通訊協(xié)議做出交互的呢介紹基于我們的目的,本文主要講解和實(shí)踐的通訊協(xié)議的客戶端和服務(wù)端是通過(guò)連接來(lái)進(jìn)
用 Go 來(lái)了解一下 Redis 通訊協(xié)議
原文地址:用 Go 來(lái)了解一下 Redis 通訊協(xié)議
Go、PHP、Java... 都有那么多包來(lái)支撐你使用 Redis,那你是否有想過(guò)
有了服務(wù)端,有了客戶端,他們倆是怎樣通訊,又是基于什么通訊協(xié)議做出交互的呢?
介紹基于我們的目的,本文主要講解和實(shí)踐 Redis 的通訊協(xié)議
Redis 的客戶端和服務(wù)端是通過(guò) TCP 連接來(lái)進(jìn)行數(shù)據(jù)交互, 服務(wù)器默認(rèn)的端口號(hào)為 6379
客戶端和服務(wù)器發(fā)送的命令或數(shù)據(jù)一律以 (CRLF)結(jié)尾(這是一條約定)
協(xié)議在 Redis 中分為請(qǐng)求和回復(fù),而請(qǐng)求協(xié)議又分為新版和舊版,新版統(tǒng)一請(qǐng)求協(xié)議在 Redis 1.2 版本中引入,最終在 Redis 2.0 版本成為 Redis 服務(wù)器通信的標(biāo)準(zhǔn)方式
本文是基于新版協(xié)議來(lái)實(shí)現(xiàn)功能,不建議使用舊版(1.2 挺老舊了)。如下是新協(xié)議的各種范例:
請(qǐng)求協(xié)議1、 格式示例
*<參數(shù)數(shù)量> CR LF $<參數(shù) 1 的字節(jié)數(shù)量> CR LF <參數(shù) 1 的數(shù)據(jù)> CR LF ... $<參數(shù) N 的字節(jié)數(shù)量> CR LF <參數(shù) N 的數(shù)據(jù)> CR LF
在該協(xié)議下所有發(fā)送至 Redis 服務(wù)器的參數(shù)都是二進(jìn)制安全(binary safe)的
2、打印示例
*3 $3 SET $5 mykey $7 myvalue
3、實(shí)際協(xié)議值
"*3 $3 SET $5 mykey $7 myvalue "
這就是 Redis 的請(qǐng)求協(xié)議規(guī)范,按照范例1編寫客戶端邏輯,最終發(fā)送的是范例3,相信你已經(jīng)有大致的概念了,Redis 的協(xié)議非常的簡(jiǎn)潔易懂,這也是好上手的原因之一,你可以想想?yún)f(xié)議這么定義的好處在哪?
回復(fù)Redis 會(huì)根據(jù)你請(qǐng)求協(xié)議的不同(執(zhí)行的命令結(jié)果也不同),返回多種不同類型的回復(fù)。在這個(gè)回復(fù)“協(xié)議”中,可以通過(guò)檢查第一個(gè)字節(jié),確定這個(gè)回復(fù)是什么類型,如下:
狀態(tài)回復(fù)(status reply)的第一個(gè)字節(jié)是 "+"
錯(cuò)誤回復(fù)(error reply)的第一個(gè)字節(jié)是 "-"
整數(shù)回復(fù)(integer reply)的第一個(gè)字節(jié)是 ":"
批量回復(fù)(bulk reply)的第一個(gè)字節(jié)是 "$"
多條批量回復(fù)(multi bulk reply)的第一個(gè)字節(jié)是 "*"
有了回復(fù)的頭部標(biāo)識(shí),結(jié)尾的 CRLF,你可以大致猜想出回復(fù)“協(xié)議”是怎么樣的,但是實(shí)踐才能得出真理,斎知道怕是你很快就忘記了
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/28787.html
摘要:提供了集群支持,但也不能支持跨多個(gè)節(jié)點(diǎn)的分布式事務(wù)。是一個(gè)高性能,支持分布式事務(wù)的數(shù)據(jù)庫(kù)。譬如,我們就構(gòu)建了,一個(gè)基于的,兼容的分布式關(guān)系型數(shù)據(jù)庫(kù)。它使用作為每行的分隔符并且用不同的前綴來(lái)代表不同的類型。 什么是 Redis Redis 是一個(gè)開(kāi)源的,高性能的,支持多種數(shù)據(jù)結(jié)構(gòu)的內(nèi)存數(shù)據(jù)庫(kù),已經(jīng)被廣泛用于數(shù)據(jù)庫(kù),緩存,消息隊(duì)列等領(lǐng)域。它有著豐富的數(shù)據(jù)結(jié)構(gòu)支持,譬如 String,Has...
閱讀 1079·2021-11-18 10:07
閱讀 2493·2021-10-14 09:42
閱讀 5504·2021-09-22 15:45
閱讀 672·2021-09-03 10:29
閱讀 3577·2021-08-31 14:28
閱讀 1985·2019-08-30 15:56
閱讀 3122·2019-08-30 15:54
閱讀 1102·2019-08-29 11:32