redis操作
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

58 lines
1.2 KiB

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
}