forked from newgoo/redigo-pack
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpool.go
46 lines (40 loc) · 959 Bytes
/
pool.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package redigo_pack
import (
"fmt"
"time"
"github.com/garyburd/redigo/redis"
"github.com/sirupsen/logrus"
)
var pool *redis.Pool
func initPool(config *Config) {
pool = &redis.Pool{
MaxIdle: config.MaxIdle,
MaxActive: config.MaxActive,
IdleTimeout: 30 * time.Second,
Wait: config.Wait,
Dial: func() (redis.Conn, error) {
return setDialog(config)
},
}
}
func setDialog(config *Config) (redis.Conn, error) {
conn, err := redis.Dial("tcp", fmt.Sprintf("%s:%d", config.Host, config.Port))
if err != nil {
logrus.Error(fmt.Sprintf("init redis failed! %v", config))
}
if len(config.Password) != 0 {
if _, err := conn.Do("AUTH", config.Password); err != nil {
conn.Close()
logrus.Error(err)
}
}
if _, err := conn.Do("SELECT", config.Db); err != nil {
conn.Close()
logrus.Error(err)
}
r, err := redis.String(conn.Do("PING"))
if err != nil || r != "PONG" {
panic("连接失败")
}
return conn, nil
}