package redis import ( "log" "time" "git.tetele.net/tgo/conf" redisdb "github.com/gomodule/redigo/redis" ) // 定义redis链接池 var Pool *redisdb.Pool // func init() { // if Pool == nil { // RedisInit() // } // } // 初始化redis链接池 func RedisInit(max ...int) { var MaxActive, MaxIdle int if len(max) > 0 { MaxActive = max[0] } if len(max) > 1 { MaxIdle = max[1] } Pool = &redisdb.Pool{ MaxIdle: MaxIdle, /*最大的空闲连接数*/ MaxActive: MaxActive, /*最大的激活连接数*/ Dial: redisConn, } } func redisConn() (redisdb.Conn, error) { var url string = conf.REDIS_SERVER if url == "" { url = "127.0.0.1:6379" } dbOption := redisdb.DialDatabase(0) pwOption := redisdb.DialPassword("") // **重要** 设置读写超时 readTimeout := redisdb.DialReadTimeout(time.Second * time.Duration(2)) writeTimeout := redisdb.DialWriteTimeout(time.Second * time.Duration(5)) conTimeout := redisdb.DialConnectTimeout(time.Second * time.Duration(2)) c, err := redisdb.Dial("tcp", url, dbOption, pwOption, readTimeout, writeTimeout, conTimeout) if err != nil { log.Println("redis server connect failed", err) return nil, err } return c, nil }