1 Star 0 Fork 0

Darwin/go-tools

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
redis.go 2.01 KB
一键复制 编辑 原始数据 按行查看 历史
baoyx 提交于 2025-08-20 15:18 +08:00 . feat:update redis conf
package redis
import (
"context"
"time"
redisConfig "gitee.com/byx_darwin/go-tools/config/redis"
"github.com/redis/go-redis/extra/redisotel/v9"
"github.com/redis/go-redis/v9"
)
func NewRedisClient(ctx context.Context,
config *redisConfig.Config,
isTrace bool) (*redis.Client, error) {
options := new(redis.Options)
options.Addr = config.Address[0]
options.Password = config.Password
options.DB = config.DB
options.ContextTimeoutEnabled = true
if config.PoolSize > 0 {
options.PoolSize = config.PoolSize
}
if config.MinIdleCons > 0 {
options.MinIdleConns = config.MinIdleCons
}
if config.MaxConnAge > 0 {
options.MaxIdleConns = config.MaxConnAge
}
if config.IdleCheckFrequency > 0 {
options.ConnMaxIdleTime = time.Duration(config.IdleCheckFrequency) * time.Millisecond
}
if config.IdleTimeout > 0 {
options.ConnMaxLifetime = time.Duration(config.IdleTimeout) * time.Millisecond
}
if config.DialTimeout > 0 {
options.DialTimeout = time.Duration(config.DialTimeout) * time.Millisecond
}
if config.ReadTimeout > 0 {
options.ReadTimeout = time.Duration(config.ReadTimeout) * time.Millisecond
}
if config.WriteTimeout > 0 {
options.WriteTimeout = time.Duration(config.WriteTimeout) * time.Millisecond
}
if config.PoolTimeout > 0 {
options.PoolTimeout = time.Duration(config.PoolTimeout) * time.Millisecond
}
if config.MaxRetries > 0 {
options.MaxRetries = config.MaxRetries
}
if config.MinRetryBackoff > 0 {
options.MinRetryBackoff = time.Duration(config.MinRetryBackoff) * time.Millisecond
}
if config.MaxRetryBackoff > 0 {
options.MaxRetryBackoff = time.Duration(config.MaxRetryBackoff) * time.Millisecond
}
client := redis.NewClient(options)
if isTrace {
// 开启 tracing instrumentation.
if err := redisotel.InstrumentTracing(client); err != nil {
panic(err)
}
// 开启 metrics instrumentation.
if err := redisotel.InstrumentMetrics(client); err != nil {
panic(err)
}
}
_, err := client.Ping(ctx).Result()
if err != nil {
return nil, err
}
return client, nil
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/byx_darwin/go-tools.git
git@gitee.com:byx_darwin/go-tools.git
byx_darwin
go-tools
go-tools
5689db40e435

搜索帮助