redis-mysql连接池

本文介绍如何使用Go语言创建MySQL和Redis的连接池,包括配置连接参数、设置最大空闲连接数和最大打开连接数,以及通过Dial选项进行连接超时和读写超时设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Redis连接池创建

func GetRedisDBPool(addr, pwd string, db int) *redis.Pool {
	return &redis.Pool{
		MaxIdle:     6,
		IdleTimeout: 240 * time.Second,
		Dial: func() (redis.Conn, error) {
			opts := []redis.DialOption{
				redis.DialConnectTimeout(5 * time.Second),
				redis.DialReadTimeout(2 * time.Second),
				redis.DialWriteTimeout(2 * time.Second),
				redis.DialDatabase(db),
				redis.DialPassword(pwd),
			}
			c, err := redis.Dial("tcp", addr, opts...)
			if err != nil {
				fmt.Printf("connect %s error %s", addr, err.Error())
				return nil, err
			}
			return c, err
		},
		TestOnBorrow: func(c redis.Conn, t time.Time) error {
			_, err := c.Do("PING")
			return err
		},
	}
}

2.mysql 连接

func GetDbByHost(user string, password string, host string,)  (*gorm.DB, error){
	var mysql = fmt.Sprintf(
		"%s:%s@tcp(%s:3306)/shop?charset=utf8mb4&parseTime=True&loc=Local",
		user, password, host,
	)

	log.Print(mysql)
	DB, err := gorm.Open("mysql", mysql)
	if err != nil {
		return nil, err
	}
	DB.DB().SetMaxIdleConns(10)
	DB.DB().SetMaxOpenConns(100)
	return DB, nil
}

----------------------------------【喜欢打赏】-------------------------------------------

小主,辛苦啦!文章棒棒哒,赏杯咖啡吧...打赏

----------------------------------【喜欢打赏】-------------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值