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.

77 lines
1.7 KiB

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
}