Compare commits
4 Commits
Author | Date | ||
---|---|---|---|
bf3cd9bc27 | |||
5a26f88da7 | |||
7c4e176775 | |||
|
576807b94e |
18
redis.go
18
redis.go
@ -1,11 +1,25 @@
|
|||||||
package redis
|
package redis
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
redigo "github.com/gomodule/redigo/redis"
|
||||||
"qoobing.com/gomod/redis/redis"
|
"qoobing.com/gomod/redis/redis"
|
||||||
"qoobing.com/gomod/redis/sentinel"
|
"qoobing.com/gomod/redis/sentinel"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Config = sentinel.Config
|
type (
|
||||||
|
Conn = redigo.Conn
|
||||||
|
Pool = redigo.Pool
|
||||||
|
Config = sentinel.Config
|
||||||
|
)
|
||||||
|
|
||||||
var NewPool = redis.NewPool
|
var NewRedisPool = redis.NewPool
|
||||||
var NewSentinelPool = sentinel.NewPool
|
var NewSentinelPool = sentinel.NewPool
|
||||||
|
|
||||||
|
func NewPool(cfg Config) *redigo.Pool {
|
||||||
|
if cfg.Master != "" {
|
||||||
|
return NewRedisPool(cfg)
|
||||||
|
} else if cfg.MasterName != "" {
|
||||||
|
return NewSentinelPool(cfg)
|
||||||
|
}
|
||||||
|
panic("invalid config: Master & MasterName are both empty")
|
||||||
|
}
|
||||||
|
@ -56,6 +56,10 @@ func NewPool(cfg Config) *redis.Pool {
|
|||||||
logStdWriter = os.Stdout
|
logStdWriter = os.Stdout
|
||||||
logStdFlags = log.Ldate | log.Lmicroseconds | log.Lshortfile
|
logStdFlags = log.Ldate | log.Lmicroseconds | log.Lshortfile
|
||||||
logStdLogger = log.New(logStdWriter, logStdPrefix, logStdFlags)
|
logStdLogger = log.New(logStdWriter, logStdPrefix, logStdFlags)
|
||||||
|
logErrPrefix = "ERRO "
|
||||||
|
logErrWriter = os.Stderr
|
||||||
|
logErrFlags = log.Ldate | log.Lmicroseconds | log.Lshortfile
|
||||||
|
logErrLogger = log.New(logErrWriter, logErrPrefix, logErrFlags)
|
||||||
)
|
)
|
||||||
return &redis.Pool{
|
return &redis.Pool{
|
||||||
MaxIdle: *cfg.MaxIdle,
|
MaxIdle: *cfg.MaxIdle,
|
||||||
@ -65,6 +69,7 @@ func NewPool(cfg Config) *redis.Pool {
|
|||||||
Dial: func() (redis.Conn, error) {
|
Dial: func() (redis.Conn, error) {
|
||||||
c, err := redis.Dial("tcp", masterAddr)
|
c, err := redis.Dial("tcp", masterAddr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
logErrLogger.Output(2, fmt.Sprintf("connect [%s] error: %s", masterAddr, err))
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -76,8 +81,10 @@ func NewPool(cfg Config) *redis.Pool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
logErrLogger.Output(2, fmt.Sprintf("auth [%s] error: %s", masterAddr, err))
|
||||||
return nil, fmt.Errorf("redis master AUTH failed: <%s>", err.Error())
|
return nil, fmt.Errorf("redis master AUTH failed: <%s>", err.Error())
|
||||||
} else if okstr != "OK" {
|
} else if okstr != "OK" {
|
||||||
|
logErrLogger.Output(2, fmt.Sprintf("auth [%s] not return ok but '%s'", masterAddr, okstr))
|
||||||
return nil, fmt.Errorf("redis master AUTH failed: <%s>", okstr)
|
return nil, fmt.Errorf("redis master AUTH failed: <%s>", okstr)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -121,6 +121,10 @@ func NewPool(cfg Config) *redis.Pool {
|
|||||||
logStdWriter = os.Stdout
|
logStdWriter = os.Stdout
|
||||||
logStdFlags = log.Ldate | log.Lmicroseconds | log.Lshortfile
|
logStdFlags = log.Ldate | log.Lmicroseconds | log.Lshortfile
|
||||||
logStdLogger = log.New(logStdWriter, logStdPrefix, logStdFlags)
|
logStdLogger = log.New(logStdWriter, logStdPrefix, logStdFlags)
|
||||||
|
logErrPrefix = "ERRO "
|
||||||
|
logErrWriter = os.Stderr
|
||||||
|
logErrFlags = log.Ldate | log.Lmicroseconds | log.Lshortfile
|
||||||
|
logErrLogger = log.New(logErrWriter, logErrPrefix, logErrFlags)
|
||||||
)
|
)
|
||||||
return &redis.Pool{
|
return &redis.Pool{
|
||||||
MaxIdle: *cfg.MaxIdle,
|
MaxIdle: *cfg.MaxIdle,
|
||||||
@ -130,11 +134,13 @@ func NewPool(cfg Config) *redis.Pool {
|
|||||||
Dial: func() (redis.Conn, error) {
|
Dial: func() (redis.Conn, error) {
|
||||||
masterAddr, err := sntnl.MasterAddr()
|
masterAddr, err := sntnl.MasterAddr()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
logErrLogger.Output(2, fmt.Sprintf("get master from sentinel error: %s", err))
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
c, err := redis.Dial("tcp", masterAddr)
|
c, err := redis.Dial("tcp", masterAddr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
logErrLogger.Output(2, fmt.Sprintf("connect [%s] error: %s", masterAddr, err))
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -146,8 +152,10 @@ func NewPool(cfg Config) *redis.Pool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
logErrLogger.Output(2, fmt.Sprintf("auth [%s] error: %s", masterAddr, err))
|
||||||
return nil, fmt.Errorf("redis master AUTH failed: <%s>", err.Error())
|
return nil, fmt.Errorf("redis master AUTH failed: <%s>", err.Error())
|
||||||
} else if okstr != "OK" {
|
} else if okstr != "OK" {
|
||||||
|
logErrLogger.Output(2, fmt.Sprintf("auth [%s] not return ok but '%s'", masterAddr, okstr))
|
||||||
return nil, fmt.Errorf("redis master AUTH failed: <%s>", okstr)
|
return nil, fmt.Errorf("redis master AUTH failed: <%s>", okstr)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -156,6 +164,7 @@ func NewPool(cfg Config) *redis.Pool {
|
|||||||
err = fmt.Errorf(
|
err = fmt.Errorf(
|
||||||
"master(%s) got by name '%s' is not redis master",
|
"master(%s) got by name '%s' is not redis master",
|
||||||
masterAddr, masterName)
|
masterAddr, masterName)
|
||||||
|
logErrLogger.Output(2, err.Error())
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user