package redis import ( "context" "os" "github.com/redis/rueidis" "github.com/redis/rueidis/rueidislock" "go.uber.org/fx" ) func NewRedisLocker(lc fx.Lifecycle) (rueidislock.Locker, error) { redisAddr := os.Getenv("REDIS_ADDR") password := os.Getenv("REDIS_PASSWORD") locker, err := rueidislock.NewLocker(rueidislock.LockerOption{ ClientOption: rueidis.ClientOption{InitAddress: []string{redisAddr}, Password: password}, }) if err != nil { return nil, err } lc.Append(fx.Hook{ OnStop: func(_ context.Context) error { locker.Close() return nil }, }) return locker, nil }