https://github.com/tidwall/redcon
https://github.com/redis-go/redis
Redcon is a custom Redis server framework for Go that is fast and simple to use. The reason for this library it to give an efficient server front-end for the BuntDB and Tile38 projects.
http://www.voidcc.com/project/redcon
官方的协议可以在其网站上找到: protocol。 Redis的协议叫做 RESP (REdis Serialization Protocol),客户端和服务器端通过基于文本的协议进行通讯。
所有的服务器和客户端之间的通讯都使用以下5中基本类型:
简单字符串: 服务器用来返回简单的结果,比如”OK”或者”PONG”
bulk string: 大部分单值命令的返回结果,比如 GET, LPOP, and HGET
整数: 查询长度的命令的返回结果
数组: 可以包含其它RESP对象,设置数组,用来发送命令给服务器,也用来返回多个值的命令
Error: 服务器返回错误信息
RESP的第一个字节表示数据的类型:
简单字符串: 第一个字节是 “+”, 比如 “+OK\r\n”
bulk string: 第一个字节是 “$”, 比如 “$6\r\nfoobar\r\n”
整数: 第一个字节是 “:”, 比如 “:1000\r\n”
数组: 第一个字节是 “”, 比如 “2\r\n$3\r\nfoo\r\n$3\r\nbar\r\n”
Error: 第一个字节是 “-“, 比如 “-Error message\r\n”
基本了解Redis的协议之后,我们就可以实现它的读写器了。
https://studygolang.com/articles/19907
https://www.redisgreen.com/blog/reading-and-writing-redis-protocol