尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

数据库连接配置实现

数据库连接配置实现 数据库连接配置对象type MysqlConfig struct { Ip string Port int Useer string Password string DBName string MaxOpenConns int MaxIdleConns int } type RedisConfig struct { Addr string Password string DB int MaxTry int }生成 MySQL 数据库连接字符串DSN的方法func (cfg *MysqlConfig) DSN() string { return fmt.Sprintf(%s:%stcp(%s:%d)/%s?charsetutf8mb4parseTimetruelocUTC, cfg.User, cfg.Password, cfg.Ip, cfg.Port, cfg.DBName) }一、data服务实现1.创建dataServer配置对象type DataServerConfig struct { RegionName string TcpIp string TcpPort uint16 ExternalIp string // 注册到etcd对外IP空时回退TcpIp SysHttpAddr string RegistrationCenter []string PlayerDB *common.MysqlConfig Redis *common.RedisConfig ExecutorSize int }2、生成具体的sql.DB对象并创建连接func (mgr *DBManager) newDBFromCfg(cfg *common.MysqlConfig) (*sql.DB, error) { if cfg nil { return nil, errors.New(mysql config is nil) } db, err : sql.Open(mysql, cfg.DSN()) if err ! nil { return nil, err } db.SetMaxOpenConns(cfg.MaxOpenConns) db.SetMaxIdleConns(cfg.MaxIdleConns) db.SetConnMaxLifetime(time.Hour * 7) // mysql 默认配置为8小时 需要比服务端小一点 if err : db.Ping(); err ! nil { return nil, err } return db, nil }3、直接根据表名和SQL语句进行数据交互tableName : common.GetPlayerRecordTableName(playerId) querySql : SELECT player_id,player_name,create_time,format_version,version,last_active_time,bin FROM tableName WHERE player_id? LIMIT 1 row : mgr.playerDB.QueryRow(querySql, playerId)
返回列表