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() }