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.结果