1.1.1. 一、连接池的作用:
反复的打开和关闭redis连接很消耗时间和资源,所以需要连接池。
1.1.2. 二、redis连接池的使用。
1、安装redis客户端的依赖包。这里使用redigo客户端。
go get github.com/gomodule/redigo/redis
2、例子如下:
import (
"fmt"
"github.com/gomodule/redigo/redis"
)
//定义连接池
var pool *redis.Pool
//程序启动时,初始化连接池。
func init() {
pool = &redis.Pool{
MaxIdle: 8, //最大空闲链接数
MaxActive: 0, // 表示和数据库的最大链接数, 0 表示没有限制
IdleTimeout: 100, // 最大空闲时间
Dial: func() (redis.Conn, error) { // 初始化链接的代码, 链接哪个 ip 的 redis
return redis.Dial("tcp", "192.168.1.10:6379",
redis.DialPassword("123456"))
},
}
}
func main() {
conn := pool.Get()//先从 pool 取出一个链接
defer conn.Close() //关闭连接
fmt.Println("连接 redis success ...")
//相当于在redis执行命令:"MSet name 张三 age 23 sex 男"
_, err := conn.Do("MSet", "name","张三","age",23,"sex","男")
if err != nil {
fmt.Println("MSet 失败",err)
return
}
//相当于在redis执行命令:"MGet name age sex" 并且把返回值转换为 String数组
reply, err := redis.Strings(conn.Do("MGet", "name","age","sex"))
if err != nil {
fmt.Println("MGet 失败",err)
return
}
// 返回结果reply= [张三 23 男]
fmt.Println("返回结果reply=",reply)
}
说明:主要代码如下。
1、创建连接池:
pool = &redis.Pool{ MaxIdle: 8, //最大空闲链接数 MaxActive: 0, // 表示和数据库的最大链接数, 0 表示没有限制 IdleTimeout: 100, // 最大空闲时间 Dial: func() (redis.Conn, error) { // 初始化链接的代码, 链接哪个 ip 的 redis return redis.Dial("tcp", "192.168.1.10:6379", redis.DialPassword("123456")) }, }
2、先从 pool 取出一个链接:
conn := pool.Get()
3、关闭连接:
defer conn.Close()