From 0ed080ee44addbec53440e7ba807a9aeed50424d Mon Sep 17 00:00:00 2001 From: dtapps Date: Mon, 1 Apr 2024 23:47:49 +0800 Subject: [PATCH] =?UTF-8?q?-=20redis=E5=A2=9E=E5=8A=A0url=E8=BF=9E?= =?UTF-8?q?=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- redis.go | 45 +++++++++++++++++++++++++++++++++++---------- version.go | 2 +- 3 files changed, 37 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 3339cce..465d2f1 100644 --- a/README.md +++ b/README.md @@ -13,5 +13,5 @@ #### 安装 ```shell -go get -v -u go.dtapp.net/dorm@v1.0.57 +go get -v -u go.dtapp.net/dorm@v1.0.58 ``` diff --git a/redis.go b/redis.go index 0217abf..af1d366 100644 --- a/redis.go +++ b/redis.go @@ -22,29 +22,29 @@ type RedisClientConfig struct { // RedisClient // https://redis.uptrace.dev/ type RedisClient struct { - db *redis.Client // 驱动 - config *RedisClientConfig // 配置 + db *redis.Client // 驱动 } +// NewRedisClient 创建实例 func NewRedisClient(config *RedisClientConfig) (*RedisClient, error) { c := &RedisClient{} - c.config = config - if c.config.PoolSize == 0 { - c.config.PoolSize = 100 + if config.PoolSize == 0 { + config.PoolSize = 100 } c.db = redis.NewClient(&redis.Options{ - Addr: c.config.Addr, // 地址 - Password: c.config.Password, // 密码 - DB: c.config.DB, // 数据库 - PoolSize: c.config.PoolSize, // 连接池大小 - ReadTimeout: c.config.ReadTimeout, // 读取超时 + Addr: config.Addr, // 地址 + Password: config.Password, // 密码 + DB: config.DB, // 数据库 + PoolSize: config.PoolSize, // 连接池大小 + ReadTimeout: config.ReadTimeout, // 读取超时 }) ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) defer cancel() + // 检测 Redis 连接是否正常连接 _, err := c.db.Ping(ctx).Result() if err != nil { return nil, errors.New(fmt.Sprintf("连接失败:%v", err)) @@ -52,3 +52,28 @@ func NewRedisClient(config *RedisClientConfig) (*RedisClient, error) { return c, nil } + +// NewRedisClientURL 创建实例 +func NewRedisClientURL(redisURL string) (*RedisClient, error) { + + c := &RedisClient{} + + opt, err := redis.ParseURL(redisURL) + if err != nil { + return c, nil + } + + // 创建 Redis 客户端 + c.db = redis.NewClient(opt) + + ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) + defer cancel() + + // 检测 Redis 连接是否正常连接 + _, err = c.db.Ping(ctx).Result() + if err != nil { + return nil, errors.New(fmt.Sprintf("连接失败:%v", err)) + } + + return c, nil +} diff --git a/version.go b/version.go index a375967..072b465 100644 --- a/version.go +++ b/version.go @@ -1,4 +1,4 @@ package dorm // Version 版本 -const Version = "1.0.57" +const Version = "1.0.58"