@@ -2,13 +2,15 @@ package common
2
2
3
3
import (
4
4
"context"
5
- "github.com/go-redis/redis/v8"
6
- "github.com/songquanpeng/one-api/common/logger"
7
5
"os"
6
+ "strings"
8
7
"time"
8
+
9
+ "github.com/go-redis/redis/v8"
10
+ "github.com/songquanpeng/one-api/common/logger"
9
11
)
10
12
11
- var RDB * redis.Client
13
+ var RDB redis.Cmdable
12
14
var RedisEnabled = true
13
15
14
16
// InitRedisClient This function is called after init()
@@ -23,13 +25,23 @@ func InitRedisClient() (err error) {
23
25
logger .SysLog ("SYNC_FREQUENCY not set, Redis is disabled" )
24
26
return nil
25
27
}
26
- logger .SysLog ("Redis is enabled" )
27
- opt , err := redis .ParseURL (os .Getenv ("REDIS_CONN_STRING" ))
28
- if err != nil {
29
- logger .FatalLog ("failed to parse Redis connection string: " + err .Error ())
28
+ redisConnString := os .Getenv ("REDIS_CONN_STRING" )
29
+ if os .Getenv ("REDIS_MASTER_NAME" ) == "" {
30
+ logger .SysLog ("Redis is enabled" )
31
+ opt , err := redis .ParseURL (redisConnString )
32
+ if err != nil {
33
+ logger .FatalLog ("failed to parse Redis connection string: " + err .Error ())
34
+ }
35
+ RDB = redis .NewClient (opt )
36
+ } else {
37
+ // cluster mode
38
+ logger .SysLog ("Redis cluster mode enabled" )
39
+ RDB = redis .NewUniversalClient (& redis.UniversalOptions {
40
+ Addrs : strings .Split (redisConnString , "," ),
41
+ Password : os .Getenv ("REDIS_PASSWORD" ),
42
+ MasterName : os .Getenv ("REDIS_MASTER_NAME" ),
43
+ })
30
44
}
31
- RDB = redis .NewClient (opt )
32
-
33
45
ctx , cancel := context .WithTimeout (context .Background (), 5 * time .Second )
34
46
defer cancel ()
35
47
0 commit comments