redis db
This commit is contained in:
parent
5a438ce485
commit
bbf8875e30
|
|
@ -10,17 +10,17 @@ data:
|
||||||
driver: mysql
|
driver: mysql
|
||||||
source: root:lansexiongdi6,@tcp(47.97.27.195:3306)/voucher?parseTime=True&loc=Local
|
source: root:lansexiongdi6,@tcp(47.97.27.195:3306)/voucher?parseTime=True&loc=Local
|
||||||
maxIdle: 100 #最大的空闲连接数
|
maxIdle: 100 #最大的空闲连接数
|
||||||
maxOpen: 2000 #最大连接数,0表示不受限制
|
maxOpen: 1000 #最大连接数,0表示不受限制
|
||||||
maxLifetime: 30s #连接复用的最大生命周期
|
maxLifetime: 300s #连接复用的最大生命周期
|
||||||
isDebug: false
|
isDebug: false
|
||||||
redis: #没有则注释此属性
|
redis: #没有则注释此属性
|
||||||
addr: 47.97.27.195:6379
|
addr: 47.97.27.195:6379
|
||||||
password: lansexiongdi@666
|
password: lansexiongdi@666
|
||||||
readTimeout: 5s
|
readTimeout: 5s
|
||||||
writeTimeout: 5s
|
writeTimeout: 5s
|
||||||
poolSize: 30 #连接池大小,不配置,或配置为0表示不启用连接池
|
poolSize: 100 #连接池大小,不配置,或配置为0表示不启用连接池
|
||||||
minIdleConns: 10 #最小空闲连接数
|
minIdleConns: 50 #最小空闲连接数
|
||||||
connMaxIdleTime: 30s #每个连接最大空闲时间,如果超过了这个时间会被关闭
|
connMaxIdleTime: 60s #每个连接最大空闲时间,如果超过了这个时间会被关闭
|
||||||
db: 3
|
db: 3
|
||||||
|
|
||||||
rocketMQ:
|
rocketMQ:
|
||||||
|
|
|
||||||
|
|
@ -9,18 +9,18 @@ data:
|
||||||
db:
|
db:
|
||||||
driver: mysql
|
driver: mysql
|
||||||
source: root:lansexiongdi6,@tcp(47.97.27.195:3306)/voucher?parseTime=True&loc=Local
|
source: root:lansexiongdi6,@tcp(47.97.27.195:3306)/voucher?parseTime=True&loc=Local
|
||||||
maxIdle: 3000 #最大的空闲连接数
|
maxIdle: 100 #最大的空闲连接数
|
||||||
maxOpen: 3000 #最大连接数,0表示不受限制
|
maxOpen: 1000 #最大连接数,0表示不受限制
|
||||||
maxLifetime: 60s #连接复用的最大生命周期
|
maxLifetime: 300s #连接复用的最大生命周期
|
||||||
isDebug: false
|
isDebug: false
|
||||||
redis: #没有则注释此属性
|
redis: #没有则注释此属性
|
||||||
addr: 47.97.27.195:6379
|
addr: 47.97.27.195:6379
|
||||||
password: lansexiongdi@666
|
password: lansexiongdi@666
|
||||||
readTimeout: 5s
|
readTimeout: 5s
|
||||||
writeTimeout: 5s
|
writeTimeout: 5s
|
||||||
poolSize: 1000 #连接池大小,不配置,或配置为0表示不启用连接池
|
poolSize: 100 #连接池大小,不配置,或配置为0表示不启用连接池
|
||||||
minIdleConns: 100 #最小空闲连接数
|
minIdleConns: 50 #最小空闲连接数
|
||||||
connMaxIdleTime: 30s #每个连接最大空闲时间,如果超过了这个时间会被关闭
|
connMaxIdleTime: 60s #每个连接最大空闲时间,如果超过了这个时间会被关闭
|
||||||
db: 3
|
db: 3
|
||||||
|
|
||||||
rocketMQ:
|
rocketMQ:
|
||||||
|
|
|
||||||
|
|
@ -28,8 +28,12 @@ func db(data *conf.Data_Database) (*gorm.DB, func()) {
|
||||||
mysqlConn, err := sql.Open(data.Driver, data.Source)
|
mysqlConn, err := sql.Open(data.Driver, data.Source)
|
||||||
|
|
||||||
gormDB, err := gorm.Open(
|
gormDB, err := gorm.Open(
|
||||||
mysql.New(mysql.Config{Conn: mysqlConn}),
|
mysql.New(mysql.Config{
|
||||||
&gorm.Config{Logger: logger.Default.LogMode(logger.Info)},
|
Conn: mysqlConn,
|
||||||
|
}),
|
||||||
|
&gorm.Config{
|
||||||
|
Logger: logger.Default.LogMode(logger.Info),
|
||||||
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,53 @@
|
||||||
|
package data
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
"google.golang.org/protobuf/types/known/durationpb"
|
||||||
|
"gorm.io/gorm"
|
||||||
|
"sync"
|
||||||
|
"testing"
|
||||||
|
"time"
|
||||||
|
"voucher/internal/conf"
|
||||||
|
"voucher/internal/data/model"
|
||||||
|
)
|
||||||
|
|
||||||
|
func Test_db(t *testing.T) {
|
||||||
|
maxLifetime := durationpb.New(300) // 5分钟
|
||||||
|
data := &conf.Data_Database{
|
||||||
|
Driver: "mysql",
|
||||||
|
Source: "root:lansexiongdi6,@tcp(47.97.27.195:3306)/voucher?parseTime=True&loc=Local",
|
||||||
|
MaxIdle: 50, // 空闲连接池
|
||||||
|
MaxOpen: 100, // 最大连接数
|
||||||
|
MaxLifetime: maxLifetime,
|
||||||
|
IsDebug: false,
|
||||||
|
}
|
||||||
|
gormDb, cleanup := db(data)
|
||||||
|
defer cleanup()
|
||||||
|
|
||||||
|
start2 := time.Now()
|
||||||
|
errCount := 0
|
||||||
|
var wg sync.WaitGroup
|
||||||
|
const concurrency = 50 // 调整并发数
|
||||||
|
wg.Add(concurrency)
|
||||||
|
|
||||||
|
for i := 0; i < concurrency; i++ {
|
||||||
|
go func() {
|
||||||
|
defer wg.Done()
|
||||||
|
|
||||||
|
var order model.Order
|
||||||
|
tx := gormDb.First(&order)
|
||||||
|
if tx.Error != nil {
|
||||||
|
if errors.Is(tx.Error, gorm.ErrRecordNotFound) {
|
||||||
|
t.Errorf("未找到记录")
|
||||||
|
} else {
|
||||||
|
fmt.Printf("请求错误: %v\n", tx.Error)
|
||||||
|
errCount += 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
|
||||||
|
wg.Wait()
|
||||||
|
fmt.Printf("\n--------------连接请求,总请求耗时: %v,失败次数: %d--------------\n", time.Since(start2), errCount)
|
||||||
|
}
|
||||||
|
|
@ -75,7 +75,7 @@ func (p *OrderRepoImpl) Create(ctx context.Context, req *bo.OrderBo) (*bo.OrderB
|
||||||
|
|
||||||
tx := p.db.DB(ctx).Create(info)
|
tx := p.db.DB(ctx).Create(info)
|
||||||
if tx.Error != nil {
|
if tx.Error != nil {
|
||||||
return nil, fmt.Errorf("db fail %w", tx.Error)
|
return nil, fmt.Errorf("create db fail %w", tx.Error)
|
||||||
}
|
}
|
||||||
|
|
||||||
return p.ToBo(info), nil
|
return p.ToBo(info), nil
|
||||||
|
|
@ -181,7 +181,7 @@ func (p *OrderRepoImpl) Success(ctx context.Context, id uint64, voucherNo string
|
||||||
})
|
})
|
||||||
|
|
||||||
if tx.Error != nil {
|
if tx.Error != nil {
|
||||||
return fmt.Errorf("db fail %w", tx.Error)
|
return fmt.Errorf("update db fail %w", tx.Error)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|
@ -202,7 +202,7 @@ func (p *OrderRepoImpl) Available(ctx context.Context, id uint64) error {
|
||||||
})
|
})
|
||||||
|
|
||||||
if tx.Error != nil {
|
if tx.Error != nil {
|
||||||
return fmt.Errorf("db fail %w", tx.Error)
|
return fmt.Errorf("update db fail %w", tx.Error)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|
@ -229,7 +229,7 @@ func (p *OrderRepoImpl) Fail(ctx context.Context, id uint64, remark string) erro
|
||||||
})
|
})
|
||||||
|
|
||||||
if tx.Error != nil {
|
if tx.Error != nil {
|
||||||
return fmt.Errorf("db fail %w", tx.Error)
|
return fmt.Errorf("update db fail %w", tx.Error)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|
@ -249,7 +249,7 @@ func (p *OrderRepoImpl) Used(ctx context.Context, id uint64) error {
|
||||||
})
|
})
|
||||||
|
|
||||||
if tx.Error != nil {
|
if tx.Error != nil {
|
||||||
return fmt.Errorf("db fail %w", tx.Error)
|
return fmt.Errorf("update db fail %w", tx.Error)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|
@ -268,7 +268,7 @@ func (p *OrderRepoImpl) Expired(ctx context.Context, id uint64) error {
|
||||||
})
|
})
|
||||||
|
|
||||||
if tx.Error != nil {
|
if tx.Error != nil {
|
||||||
return fmt.Errorf("db fail %w", tx.Error)
|
return fmt.Errorf("update db fail %w", tx.Error)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue