go手写Redis(1)之协议说明

这篇具有很好参考价值的文章主要介绍了go手写Redis(1)之协议说明。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

手写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进行通信的格式

  • 以 " : " 开头,以 “\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模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 手写 2PC 协议

    目录 1. 2PC 介绍 2. 2PC 协议流程 阶段一 PREPARE 阶段二 COMMIT / ROLLBACK  3. 2PC 手写 模块说明 源码介绍 2PC 模块  transaction-manager  resource-manager 模块 2PC 协议(Two Phase Commit)是一个分布式事务协议。 2PC 为两阶段提交,分为两个阶段。两个角色。         1. PREPARE         

    2023年04月09日
    浏览(29)
  • 从0开始,手写Redis

    从0开始,手写一个Redis的学习价值在于: 可以深入地理解Redis的内部机制和原理,Redis可谓是面试的绝对重点和难点 从而更好地掌握Redis的使用和优化 帮助你提高编程能力和解决问题的能力 手写一个Redis可以作为一个优质的简历轮子项目,注意,是高质量的简历轮子项目 很多

    2024年02月12日
    浏览(22)
  • 手写rpc和redis

    rpc框架搭建 consumer 消费者应用 provider 提供的服务 Provider-common 公共类模块 rpc 架构 service-Registration 服务发现 nacos nacos配置中心 load-balancing 负载均衡 redis-trench 手写redis实现和链接 rpc框架核心代码 相关的gitub仓库地址:(https://github.com/zhaoyiwen-wuxian/RpcTrench.git) master分支,进行切

    2024年01月24日
    浏览(40)
  • 轴承故障诊断系统的需求说明,仅供参考使用

    项目名称:轴承故障诊断系统 项目目标 开发一个自动化系统,用于测试和诊断工业轴承的潜在故障。系统将通过分析从轴承收集的振动数据来检测异常模式,以预测故障并提供维护建议。 硬件需求 传感器 :高精度振动传感器,型号:Honeywell 78628/1NC。 数据采集卡 :NI PXI-

    2024年01月23日
    浏览(41)
  • 用 Node.js 手写 WebSocket 协议

    目录 引言 从 http 到 websocekt 的切换 Sec-WebSocket-Key 与 Sec-WebSocket-Accept 全新的二进制协议 自己实现一个 websocket 服务器 按照协议格式解析收到的Buffer 取出opcode 取出MASK与payload长度 根据mask key读取数据 根据类型处理数据 frame 帧 数据的发送 完整代码 总结         我们知道,

    2024年02月16日
    浏览(39)
  • 支持向量机SVM(包括线性核、多项式核、高斯核)python手写实现+代码框架说明

    理论参考《统计学习方法》Chapter.7 支持向量机(SVM) 完整代码见github仓库:https://github.com/wjtgoo/SVM-python 借鉴sklearn的代码构架,整体功能实现在SVM类中,包括各种类属性,以及常用的模型训练函数 SVM.fit(x,y,iterations) ,以及预测函数 SVM.predict(x) , 类输入参数 kernal: 默认:线性

    2023年04月17日
    浏览(88)
  • 微服务常见面试题解析、问题说明及参考话术,实用干货

    这个题目主要考察对SpringCloud的组件基本了解 简单 SpringCloud包含的组件很多,有很多功能是重复的。 其中最常用组件包括: 注册中心组件:Eureka、Nacos等 负载均衡组件:Ribbon 远程调用组件:OpenFeign 网关组件:Zuul、Gateway 服务保护组件:Hystrix、Sentinel 服务配置管理组件:S

    2024年02月20日
    浏览(41)
  • Redis7实战加面试题-高阶篇(手写Redis分布式锁)

    面试题: 1.Redis除了拿来做缓存,你还见过基于Redis的什么用法? 数据共享,分布式session分布式锁 全局ID 计算器、点赞位统计 购物车 轻量级消息队列(list,stream) 抽奖 点赞、签到、打卡 差集交集并集,用户关注、可能认识的人,推荐模型 热点新闻、热搜排行榜 2.Redis做分

    2024年02月07日
    浏览(35)
  • 关于开设go语言专题的说明

    本专题写作的目的其实是分享go语言编程的使用场景,介绍go语言编程的方方面面,让大家能够用好这个由google公司发明的强力工具,提升大家在这方面的生产力,毕竟 ”君子善假与物也“ 嘛。 这里我先说明一下,我并不是一个对go语言的所有一切都认同的人,你会发现很多

    2024年02月16日
    浏览(28)
  • go env 配置(环境变量)说明

    前提:已经安装好 golang 可正确的运行下面这段命令,来查看 go 的配置: 输出示例: 以上是我本地(windows)环境下输出的配置信息(环境变量) 我们这次就针对每个配置信息进行一个说明,具体到每个字段是什么意思   以下标注红色的字段,我个人认为比较关键的,其他的可以

    2024年02月05日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包