代码拉取完成,页面将自动刷新
package redis
import (
"errors"
"fmt"
"gitee.com/mosache/YFrame/util/ctx"
red "github.com/gomodule/redigo/redis"
"strings"
"time"
)
var (
pool *red.Pool
)
func InitRedis(conf *Config) error {
redisDialOpts := make([]red.DialOption, 0)
redisDialOpts = append(redisDialOpts, red.DialDatabase(conf.DB))
if len(strings.TrimSpace(conf.Password)) > 0 {
//redisDialOpts = append(redisDialOpts, red.DialUsername(conf.UserName))
redisDialOpts = append(redisDialOpts, red.DialPassword(conf.Password))
}
pool = &red.Pool{
Dial: func() (red.Conn, error) {
return red.Dial("tcp", fmt.Sprintf("%s:%d",
conf.Host, conf.Port),
redisDialOpts...)
},
MaxIdle: 100,
MaxActive: 500,
IdleTimeout: 20 * time.Second,
MaxConnLifetime: 60 * time.Second,
TestOnBorrow: func(c red.Conn, t time.Time) error {
if time.Since(t) < time.Minute {
return nil
}
_, err := c.Do("PING")
return err
},
}
if pool == nil {
return errors.New("init redis error")
}
return ping()
}
func Close() error {
if pool != nil {
pool.Close()
}
return nil
}
func ping() error {
conn, err := pool.GetContext(ctx.WithTimeOut(5 * time.Second).Ctx)
if err != nil {
return err
}
r, err := red.String(conn.Do("PING"))
if err != nil {
return err
}
if r != "PONG" {
return errors.New("ping err")
}
return nil
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。