Files
public/myredis/myredis.go
2021-02-04 19:48:03 +08:00

74 lines
1.3 KiB
Go

package myredis
import "github.com/gomodule/redigo/redis"
// RedisDial 操作
type RedisDial interface {
}
// DefaultConf ...
func DefaultConf() *MyRedis {
if _default.conf == nil {
InitDefaultRedis()
}
return _default
}
// InitDefaultRedis 初始化(必须要优先调用一次)
func InitDefaultRedis(ops ...Option) {
var tmp = &redisOptions{}
for _, o := range ops {
o.apply(tmp)
}
if len(tmp.addrs) == 0 {
tmp.addrs = append(tmp.addrs, ":6379")
}
_default.mtx.Lock()
defer _default.mtx.Unlock()
_default.conf = tmp
}
// InitRedis 初始化(必须要优先调用一次)
func InitRedis(ops ...Option) *MyRedis {
var cnf = &MyRedis{}
var tmp = &redisOptions{}
for _, o := range ops {
o.apply(tmp)
}
if len(tmp.addrs) == 0 {
tmp.addrs = append(tmp.addrs, ":6379")
}
cnf.mtx.Lock()
defer cnf.mtx.Unlock()
cnf.conf = tmp
return cnf
}
// NewRedis 初始化一个(InitDefaultRedis(需要优先调用)) groupName:分组名
func NewRedis(con *MyRedis) (dial RedisDial, err error) {
if con == nil {
con = DefaultConf()
}
con.once.Do(func() { // 创建连接
ReDialRedis(con)
})
return nil, nil
}
// ReDialRedis 重新连接redis
func ReDialRedis(con *MyRedis) {
con.mtx.Lock()
defer con.mtx.Unlock()
if con.conf.maxIdle > 0 { // 创建连接池
return
}
con.dial =
// 创建单个连接
redis.Dial("tcp",con.)
}