85 lines
1.7 KiB
Go
85 lines
1.7 KiB
Go
package db
|
|
|
|
import (
|
|
"sync"
|
|
"time"
|
|
)
|
|
|
|
type (
|
|
ISys interface {
|
|
//同步区服列表
|
|
SyncServiceList() (err error)
|
|
//本服数据连接
|
|
Local() (conn *DBConn, err error)
|
|
//当前是否是跨服
|
|
IsCross() bool
|
|
//跨服区服id
|
|
CrossTag() string
|
|
//本服数据连接
|
|
Cross() (conn *DBConn, err error)
|
|
//跨服列表数据层连接
|
|
ServerDBConn(stage string) (conn *DBConn, err error)
|
|
///获取区服列表标签
|
|
GetServerTags() []string
|
|
}
|
|
//过期数据
|
|
ModelDataExpired struct {
|
|
key string //主key
|
|
mu sync.RWMutex //安全锁
|
|
keys map[string]struct{} //数据集合
|
|
expired time.Time //过期时间
|
|
}
|
|
)
|
|
|
|
var defsys ISys
|
|
|
|
func OnInit(config map[string]interface{}, option ...Option) (err error) {
|
|
var options *Options
|
|
if options, err = newOptions(config, option...); err != nil {
|
|
return
|
|
}
|
|
defsys, err = newSys(options)
|
|
|
|
// defsys.Local().Redis.GetClient().FlushAll(context.TODO())
|
|
return
|
|
}
|
|
|
|
func NewSys(option ...Option) (sys ISys, err error) {
|
|
var options *Options
|
|
if options, err = newOptionsByOption(option...); err != nil {
|
|
return
|
|
}
|
|
defsys, err = newSys(options)
|
|
return
|
|
}
|
|
|
|
//同步区服列表
|
|
func SyncServiceList() (err error) {
|
|
return defsys.SyncServiceList()
|
|
}
|
|
|
|
func Local() (conn *DBConn, err error) {
|
|
return defsys.Local()
|
|
}
|
|
|
|
func IsCross() bool {
|
|
return defsys.IsCross()
|
|
}
|
|
|
|
func CrossTag() string {
|
|
return defsys.CrossTag()
|
|
}
|
|
|
|
func Cross() (conn *DBConn, err error) {
|
|
return defsys.Cross()
|
|
}
|
|
|
|
func ServerDBConn(stage string) (conn *DBConn, err error) {
|
|
return defsys.ServerDBConn(stage)
|
|
}
|
|
|
|
///获取区服列表标签
|
|
func GetServerTags() []string {
|
|
return defsys.GetServerTags()
|
|
}
|