首页 > 数据库 > Redis > 正文

golang redis客户端怎么连接

WBOY
发布: 2023-05-29 09:14:08
转载
822人浏览过

实现了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

立即学习go语言免费学习笔记(深入)”;

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

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

3,Receive 接收服务端的响应

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

// conn is the low-level implementation of Conn
登录后复制

因为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

JoinMC智能客服
JoinMC智能客服

JoinMC智能客服,帮您熬夜加班,7X24小时全天候智能回复用户消息,自动维护媒体主页,全平台渠道集成管理,电商物流平台一键绑定,让您出海轻松无忧!

JoinMC智能客服 23
查看详情 JoinMC智能客服

      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客户端怎么连接的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:亿速云网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号