概述
(1)提前准备好一定数量的链接,放入到链接池中。
(2)Go需要操作redis时,直接从链接池中取出连接使用就可,节省了临时获取redis链接的时间,提高效率
(3)链接池中的链接数量应该实现动态增长或减少来满足高并发请求
go连接redis数据库基本操作见
go连接redis
代码实现
package main
import (
"fmt"
"github.com/garyburd/redigo/redis"
)
var pool *redis.Pool
func init(){
pool= &redis.Pool{
MaxIdle: 8, //最大空闲连接数
MaxActive: 0, //与数据库的最大链接数,0表示没有限制
IdleTimeout: 100, //最大空闲时间
Dial: func() (redis.Conn,error){ //初始化链接池
return redis.Dial("tcp","localhost:6379")
},
}
}
func add(a int,b int) (c int){
return a+b
}
func main(){
//取出一个连接
conn:=pool.Get()
defer conn.Close()
//写入数据
_,err:= conn.Do("set","name","tom")
if err != nil{
fmt.Println("set err=",err)
}
//查看数据
r,err:= conn.Do("get","name")
if err!=nil{
fmt.Println("get err=",err)
}
//返回的r是interface{},需要转换
name,_:=redis.String(r,nil)
fmt.Printf("name=%v,type=%T",name,name)
}
终端测试结果