手写Redis
参考大佬的go实现redis,自己实现一个简单版本的用于学习go以及网络编程相关
https://github.com/HDT3213/godis
https://coding.imooc.com/class/576.html #慕课网课程
源码地址:
https://gitee.com/haijun1998/go_redis
RESP协议
Redis Serialization Protocol redis序列化协议,包括五种消息类型
- 正常回复
- 错误回复
- 整数
- 多行字符串
- 数组
正常回复
- 以 " + " 开头,以 “\r\n” 结尾的字符串形式
+OK\r\n #指令正常
错误回复
- 以 " - " 开头,以 “\r\n” 结尾的字符串形式
-Error message \r\n #指令执行错误
整数
客户端跟Redis进行通信的格式文章来源:https://www.toymoban.com/news/detail-457228.html
- 以 " : " 开头,以 “\r\n” 结尾的字符串形式
:123456\r\n
多行字符串
- 以 " $ " 开头,后面跟实际发送字节数,以 “\r\n” 结尾的字符串形式
如果发送:hello world
$11\r\nhello world\r\n #$开头实际的字节长度,后面以\r\n结尾
发送空字符串
$0\r\n\r\n #\r\n发送空字节
数组
- 以 " * " 开头,后面跟成员的个数
SET key value 3个字符串就是3个成员
转换后:
*3\r\n$3\r\nSET\r\n$3\r\nkey\r\n$5\r\nvalue\r\n
上面就是 RESP 协议的说明,下面说明一下源码的模块文章来源地址https://www.toymoban.com/news/detail-457228.html
模块说明
- aof:redis aof实现
- common:定义常量的模块
- config:用于解析 redis.conf 的配置
- database:数据库核心,包括数据库、命令的执行
- datastruct:数据结构模块
- interface:顶级接口定义的模块
- lib:一些工具文件的定义
- logs:自定义的日志打印
- resp:连接器、处理器、响应体的定义和实现
- tcp:tcp协议监听处理
到了这里,关于go手写Redis(1)之协议说明的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!