From 3374eec047030d5ee9e29a70a17ed091789eaa20 Mon Sep 17 00:00:00 2001 From: douxu Date: Wed, 28 Jan 2026 16:49:12 +0800 Subject: [PATCH] optimize code of redis init --- config/config.go | 1 + constants/deploy_mode.go | 11 +++++++++++ diagram/redis_init.go | 8 ++++---- distributedlock/locker_init.go | 8 ++++---- main.go | 4 ++-- util/redis_options.go | 6 ++++-- 6 files changed, 26 insertions(+), 12 deletions(-) create mode 100644 constants/deploy_mode.go diff --git a/config/config.go b/config/config.go index f44c11b..b6379d3 100644 --- a/config/config.go +++ b/config/config.go @@ -19,6 +19,7 @@ type ServiceConfig struct { ServiceAddr string `mapstructure:"service_addr"` ServiceName string `mapstructure:"service_name"` SecretKey string `mapstructure:"secret_key"` + DeployEnv string `mapstructure:"deploy_env"` } // KafkaConfig define config struct of kafka config diff --git a/constants/deploy_mode.go b/constants/deploy_mode.go new file mode 100644 index 0000000..2a5addf --- /dev/null +++ b/constants/deploy_mode.go @@ -0,0 +1,11 @@ +// Package constants define constant variable +package constants + +const ( + // DevelopmentDeployMode define development operator environment for modelRT project + DevelopmentDeployMode = "development" + // DebugDeployMode define debug operator environment for modelRT project + DebugDeployMode = "debug" + // ProductionDeployMode define production operator environment for modelRT project + ProductionDeployMode = "production" +) diff --git a/diagram/redis_init.go b/diagram/redis_init.go index 273dd22..639f9f0 100644 --- a/diagram/redis_init.go +++ b/diagram/redis_init.go @@ -16,10 +16,10 @@ var ( ) // initClient define func of return successfully initialized redis client -func initClient(rCfg config.RedisConfig) *redis.Client { +func initClient(rCfg config.RedisConfig, deployEnv string) *redis.Client { client, err := util.NewRedisClient( rCfg.Addr, - util.WithPassword(rCfg.Password), + util.WithPassword(rCfg.Password, deployEnv), util.WithDB(rCfg.DB), util.WithPoolSize(rCfg.PoolSize), util.WithConnectTimeout(time.Duration(rCfg.DialTimeout)*time.Second), @@ -33,9 +33,9 @@ func initClient(rCfg config.RedisConfig) *redis.Client { } // InitRedisClientInstance define func of return instance of redis client -func InitRedisClientInstance(rCfg config.RedisConfig) *redis.Client { +func InitRedisClientInstance(rCfg config.RedisConfig, deployEnv string) *redis.Client { once.Do(func() { - _globalStorageClient = initClient(rCfg) + _globalStorageClient = initClient(rCfg, deployEnv) }) return _globalStorageClient } diff --git a/distributedlock/locker_init.go b/distributedlock/locker_init.go index e3a7bc2..507b00f 100644 --- a/distributedlock/locker_init.go +++ b/distributedlock/locker_init.go @@ -16,10 +16,10 @@ var ( ) // initClient define func of return successfully initialized redis client -func initClient(rCfg config.RedisConfig) *redis.Client { +func initClient(rCfg config.RedisConfig, deployEnv string) *redis.Client { client, err := util.NewRedisClient( rCfg.Addr, - util.WithPassword(rCfg.Password), + util.WithPassword(rCfg.Password, deployEnv), util.WithDB(rCfg.DB), util.WithPoolSize(rCfg.PoolSize), util.WithConnectTimeout(time.Duration(rCfg.DialTimeout)*time.Second), @@ -33,9 +33,9 @@ func initClient(rCfg config.RedisConfig) *redis.Client { } // InitClientInstance define func of return instance of redis client -func InitClientInstance(rCfg config.RedisConfig) *redis.Client { +func InitClientInstance(rCfg config.RedisConfig, deployEnv string) *redis.Client { once.Do(func() { - _globalLockerClient = initClient(rCfg) + _globalLockerClient = initClient(rCfg, deployEnv) }) return _globalLockerClient } diff --git a/main.go b/main.go index a875a74..bd06afe 100644 --- a/main.go +++ b/main.go @@ -130,10 +130,10 @@ func main() { defer searchPool.Close() model.InitAutocompleterWithPool(searchPool) - storageClient := diagram.InitRedisClientInstance(modelRTConfig.StorageRedisConfig) + storageClient := diagram.InitRedisClientInstance(modelRTConfig.StorageRedisConfig, *&modelRTConfig.ServiceConfig.DeployEnv) defer storageClient.Close() - lockerClient := locker.InitClientInstance(modelRTConfig.LockerRedisConfig) + lockerClient := locker.InitClientInstance(modelRTConfig.LockerRedisConfig, *&modelRTConfig.ServiceConfig.DeployEnv) defer lockerClient.Close() // init anchor param ants pool diff --git a/util/redis_options.go b/util/redis_options.go index 6293105..6980ecd 100644 --- a/util/redis_options.go +++ b/util/redis_options.go @@ -5,6 +5,8 @@ import ( "errors" "time" + "modelRT/constants" + "github.com/redis/go-redis/v9" ) @@ -15,9 +17,9 @@ type clientConfig struct { type Option func(*clientConfig) error // WithPassword define func of configure redis password options -func WithPassword(password string) Option { +func WithPassword(password string, env string) Option { return func(c *clientConfig) error { - if password == "" { + if env == constants.ProductionDeployMode && password == "" { return errors.New("password is empty") } c.Password = password