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()

results matching ""

    No results matching ""