bi/engine/db/redis.go

47 lines
1.1 KiB
Go
Raw Permalink Normal View History

2022-01-26 16:40:50 +08:00
package db
import (
"fmt"
"github.com/garyburd/redigo/redis"
"log"
"strings"
)
var RedisPool *redis.Pool
// NewRedisPool 新建一个Redis连接池 URL优先
func NewRedisPool(addr, passwd string, db, maxIdle, MaxActive int) *redis.Pool {
b := strings.HasPrefix(addr, "redis://")
var dialFunc func() (redis.Conn, error)
switch {
case b && passwd == "":
dialFunc = func() (redis.Conn, error) {
return redis.DialURL(addr, redis.DialDatabase(db))
}
case b && passwd != "":
dialFunc = func() (redis.Conn, error) {
return redis.DialURL(addr, redis.DialDatabase(db), redis.DialPassword(passwd))
}
case !b && passwd == "":
dialFunc = func() (redis.Conn, error) {
return redis.Dial("tcp", addr, redis.DialDatabase(db))
}
case !b && passwd != "":
dialFunc = func() (redis.Conn, error) {
return redis.Dial("tcp", addr, redis.DialDatabase(db), redis.DialPassword(passwd))
}
}
return &redis.Pool{
MaxIdle: maxIdle,
MaxActive: MaxActive,
Dial: func() (redis.Conn, error) {
c, err := dialFunc()
if err != nil {
log.Println(fmt.Errorf("redis 连接失败:%v", err))
}
return c, err
},
}
}