golang初始化数据库和redis的方法
admin
2023-02-16 02:20:04
0

这篇文章给大家分享的是有关golang初始化数据库和redis的方法。小编觉得挺实用的,因此分享给大家学习。如下资料是关于初始化数据库和redis的内容。

初始化数据库

数据库orm我选用xorm。首先在config.json和config.go添加对应的数据库配置。
config.json:

  "db_config": {
    "db_host": "127.0.0.1",
    "db_port": "3306",
    "db_user": "root",
    "db_password": "123456",
    "db_name": "test"
  }

config.go

type DBConfig struct {
    DbHost     string `json:"db_host"`
    DbPort     string `json:"db_port"`
    DbUser     string `json:"db_user"`
    DbPassword string `json:"db_password"`
    DbName     string `json:"db_name"`
}

接着,初始化数据库:

package db

import (
    "github.com/TomatoMr/awesomeframework/config"
    _ "github.com/go-sql-driver/mysql"
    "github.com/go-xorm/xorm"
    "github.com/pkg/errors"
)

var engine *xorm.Engine

func InitEngine() error {
    var err error
    conf := config.GetConfig()
    engine, err = xorm.NewEngine("mysql", conf.DBConfig.DbUser+
        ":"+conf.DBConfig.DbPassword+"@tcp("+conf.DBConfig.DbHost+":"+conf.DBConfig.DbPort+")/"+conf.DBConfig.DbName+"?charset=utf8")
    if err != nil {
        err = errors.Wrap(err, "InitEngine1")
        return err
    }
    err = engine.Ping()
    if err != nil {
        err = errors.Wrap(err, "InitEngine2")
        return err
    }
    return nil
}

func GetEngine() *xorm.Engine {
    return engine
}

我们再创建一个sql,等会测试连接用:

DROP DATABASE IF EXISTS `test`;
CREATE DATABASE `test`;
USE `test`;
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users`
(
    `id`   int(11)     NOT NULL AUTO_INCREMENT COMMENT 'id',
    `name` varchar(40) NOT NULL COMMENT '名字',
    `age`  int         NOT NULL DEFAULT 0 COMMENT '年龄',
    PRIMARY KEY (`id`)
) ENGINE = InnoDB COMMENT 'users';

初始化redis

同样先添加配置:
config.json:

"redis_config": {
    "addr": "127.0.0.1:6379",
    "password": "",
    "db": 0
  }

config.go:

type RedisConfig struct {
    Addr     string `json:"addr"`
    Password string `json:"password"`
    DB       int    `json:"db"`
}

初始化redis:

func InitRedis() error {
    conf := config.GetConfig()
    client = redis.NewClient(&redis.Options{
        Addr:     conf.RedisConfig.Addr,
        Password: conf.RedisConfig.Password,
        DB:       conf.RedisConfig.DB,
    })

    pong, err := client.Ping().Result()
    if err != nil {
        err = errors.Wrap(err, "InitRedis")
        return err
    }
    logger.GetLogger().Info("Redis ping:", zap.String("ping", pong))
    return nil
}

调整入口文件

err = db.InitEngine()
    if err != nil {
        fmt.Printf("Init DB failed. Error is %v", err)
        os.Exit(1)
    }

    err = redis.InitRedis()
    if err != nil {
        fmt.Printf("Init Redis failed. Error is %v", err)
        os.Exit(1)
    }

测试一下

使用上面的sql,创建一个数据库叫做test,然后搭建redis,接着我们测试一下:

编译:

go build

运行:

awesomeframework --config=./config/config.json

看下日志打印:

2020-01-20T20:09:26.798+0800    info    Redis ping: {"ping": "PONG"}
2020-01-20T20:09:26.798+0800    info    Init success.

关于golang初始化数据库和redis的方法就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

相关内容

热门资讯

【第一财经】“云南山水麻将到底... 【第一财经】“云南山水麻将到底有挂吗?”(外卦神器下载)您好,云南山水麻将这个游戏其实有挂的,确实是...
【第一财经】“新道游怎么装挂?... 有 亲,根据资深记者爆料新道游是可以开挂的,确实有挂(咨询软件无需打开直...
【第一资讯】“授权大厅牛牛辅助... 【第一资讯】“授权大厅牛牛辅助器?”(原来真的有挂)您好,授权大厅牛牛这个游戏其实有挂的,确实是有挂...
玩家分享攻略“秦乐陕西麻将是不... 有 亲,根据资深记者爆料秦乐陕西麻将是可以开挂的,确实有挂(咨询软件无需...
今日重大发现“闽悦麻将到底是不... 有 亲,根据资深记者爆料闽悦麻将是可以开挂的,确实有挂(咨询软件无需打开...
我来教教您“中州棋牌怎么装挂?... 有 亲,根据资深记者爆料中州棋牌是可以开挂的,确实有挂(咨询软件无需打开...
终于了解“天天摸麻将怎么装挂?... 您好:天天摸麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9784099】很多玩家在这款游...
今日重磅消息“aapoker怎... 网上科普关于“aapoker有没有挂”话题很是火热,小编也是针对aapoker作*弊开挂的方法以及开...
终于了解“友间十三张究竟有挂吗... 您好:友间十三张这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9784099】很多玩家在这款游...
玩家最新攻略“九酷牛牛真的有挂... 家人们!今天小编来为大家解答九酷牛牛透视挂怎么安装这个问题咨询软件客服徽9784099的挂在哪里买很...