golang redis链接池
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:连接池耗尽