|
|
- 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
- }
|