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()
}
结果:
redigo: connection pool exhausted : redigo:连接池耗尽