package redis
|
|
|
|
import (
|
|
"log"
|
|
"time"
|
|
|
|
redisdb "github.com/gomodule/redigo/redis"
|
|
)
|
|
|
|
// 定义redis链接池
|
|
var Pool *redisdb.Pool
|
|
var redisServerUrl string = "127.0.0.1:6379"
|
|
|
|
// func init() {
|
|
// if Pool == nil {
|
|
// RedisInit()
|
|
// }
|
|
// }
|
|
|
|
func Conn(server_url ...string) {
|
|
var url string = "127.0.0.1:6379"
|
|
if len(server_url) > 0 {
|
|
url = server_url[0]
|
|
}
|
|
RedisInit(url)
|
|
}
|
|
|
|
// 初始化redis链接池
|
|
func RedisInit(serverUrl 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
|
|
}
|
|
|
|
Pool = &redisdb.Pool{
|
|
MaxIdle: MaxIdle, /*最大的空闲连接数*/
|
|
MaxActive: MaxActive, /*最大的激活连接数*/
|
|
Dial: redisConn,
|
|
}
|
|
}
|
|
|
|
func redisConn() (redisdb.Conn, error) {
|
|
|
|
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", redisServerUrl, dbOption, pwOption, readTimeout, writeTimeout, conTimeout)
|
|
if err != nil {
|
|
log.Println("redis server connect failed", err)
|
|
return nil, err
|
|
}
|
|
return c, nil
|
|
}
|