1

ssdb自己的协议非常简单,可以非常容易的封装和解析。

请求

官网的协议描述

Packet := Block+ '\n'
Block  := Size '\n' Data '\n'
Size   := literal_integer
Data   := size_bytes_of_data
Request := Cmd Blocks*
Cmd     := Block

比如 get key 是a的命令是这样的

3\nget\n1\na\n\n

回复

协议描述文件

Response := Status Block*
Status   := Block

响应状态码包括: ok, not_found, error, fail, client_error

比如get a 时返回 "b"
响应就是

2\nok\n1\n1\n\n

SSDB 的协议是应用无关的, 它只关心 Block, 而不管 Block 是什么数据,什么数据类型,根据命令的类型来决定, 所以在处理响应的时,会根据命令来处理返回数据。而redis会在协议里有描述,比如
redis中多条批量回复的第一个字节为 "*" , 后跟一个字符串表示的整数值, 这个值记录了多条批量回复所包含的回复数量,在SSDB处理的时候,你需要为每一类的命令单独处理,有点不方便

Links:

http://ssdb.io/docs/zh_cn/protocol.html
http://redis.readthedocs.org/en/latest/topic/protocol.html

ssdb Elixir 客户端

https://github.com/lidashuang/ssdb_elixir


lidashuang
6.7k 声望165 粉丝

$ Ruby/Elixir/Golang


引用和评论

0 条评论