package redis import ( "log" "time" redisdb "github.com/gomodule/redigo/redis" ) // 定义redis链接池 var Pool *redisdb.Pool // redis服务地址,如需更改,在api服务中设置 var RedisServerUrl string = "127.0.0.1:6379" // redis密码,如需更改,在api服务中设置 var RedisPassword string = "" var MaxActive, MaxIdle int = 1, 1 //最大的激活连接数,最大的空闲连接数 // func init() { // if Pool == nil { // RedisInit() // } // } func Conn() { RedisInit(RedisServerUrl, RedisPassword, MaxActive, MaxIdle) } /* * 初始化redis链接池 * @param serverUrl 服务地址 * @param password 密码 * @param max 最大的激活连接数,最大的空闲连接数 */ func RedisInit(serverUrl, password string, max ...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 }