redis 连接池_redigo 连接池和redis 协议解析,wireshark 抓包瞅瞅[视频]

本文档介绍如何使用Go的Redigo库建立到Redis的连接,并演示了连接池的实现。同时,通过抓包分析展示了Redis的RESP协议,包括不同类型的响应单元和数据结构。在代码示例中,可以看到如何执行INCR和EXPIRE操作,并获取整数回复。
摘要由CSDN通过智能技术生成

最近用 redigo 比较多,记录一下 redigo 连接池和实现,并抓个包瞅瞅 redis 交互协议。

个人理解,有误请指出。

e44500a1ece84b6ac5c258c90976549c.png
抓个包看看 redis 协议https://www.zhihu.com/video/1154916782925008896
package main

import (
	"fmt"

	"github.com/gomodule/redigo/redis"
)

func main() {

	// return conn not conn pool
	conn, err := redis.Dial("tcp", "127.0.0.1:6379")
	if err != nil {
		fmt.Println("Connect to redis error", err)
		return
	}
	defer conn.Close()

	key := "PegasusWang"
	conn.Send("INCR", key)
	conn.Send("EXPIRE", key, 60)
	conn.Flush()
	// reply from get
	hits, err := redis.Int64(conn.Receive())
	fmt.Println(hits, err)
}

/*
RESP(Redis Serialization Protocol): redis序列化协议

resp 把传输的数据结构分成5种最小单元类型,单元结束后统一加上回车换行符 rn

- 单行字符串以+开头
  - +hellorn
- 多行字符串以$开头,后缀字符串长度
  - $11rnhello worldrn
- 整数值以: 开头,跟上字符串形式
  - :1024rn
- 错误消息,以-开头
  - WRONGTYPE Operation against a key holding the wrong kind of value
- 数组,以 * 开头,后跟数组的长度
  - *3rn:1rn:2rn:3rn

特殊:

- NULL 用多行字符串,长度-1
  - $-1rn
- 空串,用多行字符串表示,长度0。注意这里的俩rn 中间隔的是空串
  - $0rnrn

### 客户端->服务器

只有一种格式,多行字符串数组

### 服务器->客户端

也是5种基本类型组合

- 单行字符串响应
- 错误响应
- 整数响应
- 多行字符串响应
- 数组响应
- 嵌套
*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值