千家信息网

golang redis客户端怎么连接

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这篇文章主要介绍"golang redis客户端怎么连接"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"golang redis客户端怎么连接"文章能帮助大家解
千家信息网最后更新 2025年12月02日golang redis客户端怎么连接

这篇文章主要介绍"golang redis客户端怎么连接"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"golang redis客户端怎么连接"文章能帮助大家解决问题。

实现了redis客户端,包括一个连接池和redis pipleline

conn.go

func (c *conn) Do(cmd string, args ...interface{}) (interface{}, error){

if cmd != "" {    if err := c.writeCommand(cmd, args); err != nil {      return nil, c.fatal(err)    }  }    if err := c.bw.Flush(); err != nil {    return nil, c.fatal(err)  }      for i := 0; i <= pending; i++ {    var e error    if reply, e = c.readReply(); e != nil {      return nil, c.fatal(e)    }    if e, ok := reply.(Error); ok && err == nil {      err = e    }  }


方法封装了一个请求的3个过程 Send, Flush and Receive

1,send 将请求写到输出缓冲

2, Flush将缓冲区的命令发送到服务端

3,Receive 接收服务端的响应

https://godoc.org/github.com/gomodule/redigo/redis#hdr-Pipelining

// conn is the low-level implementation of Conntype conn struct {
// Shared mu sync.Mutex pending int err error conn net.Conn
// Read readTimeout time.Duration br *bufio.Reader
// Write writeTimeout time.Duration bw *bufio.Writer
// Scratch space for formatting argument length. // '*' or '$', length, "\r\n" lenScratch [32]byte
// Scratch space for formatting integers and floats. numScratch [40]byte}

以上就是连接操作的核心代码

因为redis是文本协议,因此发送时需要按照redis协议序列化,接收的时候按照redis协议反序列化。

客户端发送命令的格式(类型):5种类型

间隔符号,在Linux下是\r\n,在Windows下是\n

1. 简单字符串 Simple Strings, 以 "+"加号 开头

格式:+ 字符串 \r\n

字符串不能包含 CR或者 LF(不允许换行)

eg: "+OK\r\n"

注意:为了发送二进制安全的字符串,一般推荐使用后面的 Bulk Strings类型

2. 错误 Errors, 以"-"减号 开头

  格式:- 错误前缀 错误信息 \r\n

错误信息不能包含 CR或者 LF(不允许换行),Errors与Simple Strings很相似,不同的是Erros会被当作异常来看待

eg: "-Error unknow command 'foobar'\r\n"

3. 整数型 Integer, 以 ":" 冒号开头

  格式:: 数字 \r\n

eg: ":1000\r\n"

4. 大字符串类型 Bulk Strings, 以 "$"美元符号开头,长度限制512M

  格式:$ 字符串的长度 \r\n 字符串 \r\n

字符串不能包含 CR或者 LF(不允许换行);

eg: "$6\r\nfoobar\r\n" 其中字符串为 foobar,而6就是foobar的字符长度

"$0\r\n\r\n" 空字符串

"$-1\r\n" null

5. 数组类型 Arrays,以 "*"星号开头

  格式:* 数组元素个数 \r\n 其他所有类型 (结尾不需要\r\n)

注意:只有元素个数后面的\r\n是属于该数组的,结尾的\r\n一般是元素的

eg: "*0\r\n" 空数组

"*2\r\n$2\r\nfoo\r\n$3\r\nbar\r\n" 数组包含2个元素,分别是字符串foo和bar

    "*3\r\n:1\r\n:2\r\n:3\r\n" 数组包含3个整数:1、2、3

"*5\r\n:1\r\n:2\r\n:3\r\n:4\r\n$6\r\nfoobar\r\n" 包含混合类型的数组

"*-1\r\n" Null数组

"*2\r\n*3\r\n:1\r\n:2\r\n:3\r\n*2\r\n+Foo\r\n-Bar\r\n" 数组嵌套,外层数组包含2个数组,整理后如下:

"*2\r\n

      *3\r\n:1\r\n:2\r\n:3\r\n

      *2\r\n+Foo\r\n-Bar\r\n"

关于"golang redis客户端怎么连接"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。

字符 字符串 数组 类型 格式 客户 客户端 开头 元素 错误 个数 知识 长度 不同 信息 命令 就是 序列 整数 方法 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 批量分发文件到ftp服务器 sql2005数据库部署 太仓无忧网络技术诚信经营 网络安全平安建设 新罗区悦上郡网络技术服务部 网络安全中的黑客 江西内网ftp服务器托管 无法连接服务器安全证书 网络安全建设论证专家意见 为什么有些文件显示服务器异常 读写分离数据库管理linux 越秀区发改局数据库 服务器绑别人二级域名安全吗 netty分布式服务器推送技术 末日生存为什么连不上服务器 有局域网为什么服务器连接失败 济南品众网络技术有限公司 宁海专业软件开发项目管理 百单网互联网科技官网 db2数据库递归相加查询 山东专升本网络技术 access数据库的建立 股票分析什么软件开发 建立access数据库 佛山众人互联网科技排名 实现linux服务器互相通信 网络安全科技展示互动 浩瀚星云网络技术有限公司待遇 龙腾服务器改windows 松江区正规软件开发互惠互利
0