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

news/2024/11/9 0:44:21/

手写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 协议的说明,下面说明一下源码的模块

模块说明

  • aof:redis aof实现
  • common:定义常量的模块
  • config:用于解析 redis.conf 的配置
  • database:数据库核心,包括数据库、命令的执行
  • datastruct:数据结构模块
  • interface:顶级接口定义的模块
  • lib:一些工具文件的定义
  • logs:自定义的日志打印
  • resp:连接器、处理器、响应体的定义和实现
  • tcp:tcp协议监听处理

http://www.ppmy.cn/news/76665.html

相关文章

C语言基础知识:位与位字段

目录 位与字节 位 比特 字节 对齐特性 位字段 位与字节 位 二进制数系统中,每个0或1就是一个位(bit),位是数据存储的最小单位。其中8 bit就称为一个字节(Byte)。计算机中的CPU位数指的是CPU一次能处理的最大位数&#xff0…

node + alipay-sdk 沙箱环境简单测试电脑网站支付

正式上线需要上传营业执照,不知道怎么去申请一个。。。。。 使用沙箱测试,首先前往支付宝开放平台控制台可看到左下方的沙箱测试链接: 然后设置接口加签方式,选择系统默认密钥: 系统默认密钥 -> 公钥模式 -> 查看…

AI在狂飙,ChatGPT-4可直接在iPhone上使用啦

今天凌晨,OpenAI 正式在 App Store 推出了 ChatGPT 的 iOS app,瞬间冲上苹果商店免费榜第二名,效率榜第一名。 于是兴致勃勃的去下载体验了一番。整体不错,以后手机使用官方的 ChatGPT 更方便啦!而且使用 GPT4 不再麻…

Mac ._ 开头的隐藏文件

在 MacOS 中,这些以 ._ 开头的隐藏文件或文件夹是由 Finder 创建的,用于存储文件的元数据信息。如果您想关闭这个功能,可以使用终端命令来禁用 Finder 创建这些文件或文件夹。以下是具体的步骤: 打开终端应用程序(可以…

k8s使用私有镜像仓库的访问凭据配置

k8s创建私有仓库凭据有两种方式 1.使用kubectl命令创建secret 2.使用docker凭证作为k8s的凭据。 1.使用kubectl命令创建secret kubectl create secret docker-registry <name> --docker-serverDOCKER_REGISTRY_SERVER --docker-usernameDOCKER_USER --docker-passwor…

第14章:触发器概述

一、触发器概述 1.开发场景 有2个相互关联的表&#xff0c;商品信息和库存信息表。在添加一条新商品记录时&#xff0c;为了保证数据完整性&#xff0c;在库存表添加一条库存记录。 把两个关联操作步骤写到程序里面&#xff0c;用事务包裹起来&#xff0c;确保两个操作成为一…

是德科技keysight E8257D信号发生器

产品概览 Keysight E8257D (Agilent) PSG 模拟信号发生器提供业界领先的输出功率、电平精度和高达 67 GHz 的相位噪声性能&#xff08;工作频率可达 70 GHz&#xff09;。Agilent PSG 模拟信号发生器的高输出功率和卓越的电平精度通常无需使用外部放大器来测试高功率设备&…

漏洞扫描的原理

漏洞扫描是指通过自动或者手动的方式&#xff0c;对系统进行全面扫描&#xff0c;发现系统中存在的漏洞。随着互联网的发展&#xff0c;漏洞扫描的重要性越来越凸显&#xff0c;因为漏洞一旦被黑客利用&#xff0c;就可能会导致系统被攻击、数据被窃取等问题。那么什么是漏洞扫…