Go语言和Redis连接池

1.代码演示

package main

import (
	"fmt"
	"github.com/garyburd/redigo/redis"
)

/*
	Redis 连接池
 */

var pool *redis.Pool // 创建redis连接池

func init() {
	// 进行实例化连接池
	pool = &redis.Pool{
		MaxIdle: 16,	// 最初的连接数量
		//MaxActive: 10,//最大连接数量
		MaxActive: 0,	//连接池最大连接数量,不确定可以用0 (0表示自动定义)按需分配
		IdleTimeout: 300,//连接关闭时间300秒 (300秒不使用的话就自动关闭)

		// 连接数据库
		Dial: func() (redis.Conn, error) {
			return redis.Dial("tcp","localhost:6379")
		},
	}
}

func main() {
	c := pool.Get() // 从连接池,取一个连接
	defer c.Close() //延迟调用,函数结束的时候,把连接放回连接池

	_, err := c.Do("set","abc",200)
	if err != nil {
		fmt.Println(err)
		return
	}

	r,err := redis.Int(c.Do("Get","abc"))
	if err != nil {
		fmt.Println("get abc faild :",err)
		return
	}
	fmt.Println(r)
	pool.Close() //关闭连接池
}

2.结果