package main

import (
	"strconv"
	"fmt"
	"github.com/garyburd/redigo/redis"
)
//创建redis连接池
var pool *redis.Pool

func init(){
	pool = &redis.Pool{
		// 最大空闲连接数。
		MaxIdle : 16,
		// 在给定时间池分配的最大连接数。
		// 当为0时,池中的连接数没有限制。
		MaxActive : 5,
		//连接关闭时间 300秒 (300秒不使用自动关闭)  
		IdleTimeout : 300,
		//连接的redis数据库
		Dial: func () (redis.Conn, error) {   
			return redis.Dial("tcp", "127.0.0.1:6379") 
		},
		
	}
}

func main(){
	for i := 0;i < 6;i++{
		go arr(i)
	}
	for{

	}
}

func arr(i int){
	//获取一个连接
	r := pool.Get()
	//函数运行结束 ,把连接放回连接池
	defer r.Close()
	str := "str_"+strconv.Itoa(i)
	_,err := r.Do("Set",str,i)
	if err != nil {
		fmt.Println(err)
		return
	}

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

  

结果:

go redis socket 连接 golang redis连接池_redis

redigo: connection pool exhausted   : redigo:连接池耗尽