package redis import ( "log" "time" "git.tetele.net/tgo/conf" redisdb "github.com/gomodule/redigo/redis" ) // 定义redis链接池 var Pool *redisdb.Pool var RedisServerUrl string = conf.REDIS_SERVER + ":" + conf.REDIS_PORT var RedisPassword string = "" // func init() { // if Pool == nil { // RedisInit() // } // } func Conn(server_url ...string) { var url, pwd string if len(server_url) > 0 { url = server_url[0] } if len(server_url) > 1 { pwd = server_url[1] } RedisInit(url, pwd) } // 初始化redis链接池 func RedisInit(serverUrl, password string, max ...int) { var MaxActive, MaxIdle int if len(max) > 0 { MaxActive = max[0] } if len(max) > 1 { MaxIdle = max[1] } if serverUrl != "" { RedisServerUrl = serverUrl } if password != "" { RedisPassword = password } Pool = &redisdb.Pool{ MaxIdle: MaxIdle, /*最大的空闲连接数*/ MaxActive: MaxActive, /*最大的激活连接数*/ Dial: redisConn, } } func redisConn() (redisdb.Conn, error) { dbOption := redisdb.DialDatabase(0) pwOption := redisdb.DialPassword(RedisPassword) // **重要** 设置读写超时 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", RedisServerUrl, dbOption, pwOption, readTimeout, writeTimeout, conTimeout) if err != nil { log.Println("redis connect failed", err) return nil, err } else { log.Println("redis connected", RedisServerUrl) } return c, nil }