diff options
| author | Chris Lu <chris.lu@gmail.com> | 2021-11-29 01:09:51 -0800 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2021-11-29 01:09:51 -0800 |
| commit | 689f5513a955528f365e79c30d9965e7826b1509 (patch) | |
| tree | fcfd2f062f82453d910082e9a232fb1446884c1d | |
| parent | 7227cfddf54d17b76f26609fdc48962dd334090d (diff) | |
| download | seaweedfs-689f5513a955528f365e79c30d9965e7826b1509.tar.xz seaweedfs-689f5513a955528f365e79c30d9965e7826b1509.zip | |
redis3 supports sentinel
| -rw-r--r-- | weed/command/scaffold/filer.toml | 8 | ||||
| -rw-r--r-- | weed/filer/redis3/redis_sentinel_store.go | 49 |
2 files changed, 57 insertions, 0 deletions
diff --git a/weed/command/scaffold/filer.toml b/weed/command/scaffold/filer.toml index bf895f484..a6a45923e 100644 --- a/weed/command/scaffold/filer.toml +++ b/weed/command/scaffold/filer.toml @@ -199,6 +199,14 @@ address = "localhost:6379" password = "" database = 0 +[redis3_sentinel] +enabled = false +addresses = ["172.22.12.7:26379","172.22.12.8:26379","172.22.12.9:26379"] +masterName = "master" +username = "" +password = "" +database = 0 + [redis_cluster3] # beta enabled = false addresses = [ diff --git a/weed/filer/redis3/redis_sentinel_store.go b/weed/filer/redis3/redis_sentinel_store.go new file mode 100644 index 000000000..a87302167 --- /dev/null +++ b/weed/filer/redis3/redis_sentinel_store.go @@ -0,0 +1,49 @@ +package redis3 + +import ( + "time" + + "github.com/chrislusf/seaweedfs/weed/filer" + "github.com/chrislusf/seaweedfs/weed/util" + "github.com/go-redis/redis/v8" + "github.com/go-redsync/redsync/v4" + "github.com/go-redsync/redsync/v4/redis/goredis/v8" +) + +func init() { + filer.Stores = append(filer.Stores, &Redis3SentinelStore{}) +} + +type Redis3SentinelStore struct { + UniversalRedis3Store +} + +func (store *Redis3SentinelStore) GetName() string { + return "redis3_sentinel" +} + +func (store *Redis3SentinelStore) Initialize(configuration util.Configuration, prefix string) (err error) { + return store.initialize( + configuration.GetStringSlice(prefix+"addresses"), + configuration.GetString(prefix+"masterName"), + configuration.GetString(prefix+"username"), + configuration.GetString(prefix+"password"), + configuration.GetInt(prefix+"database"), + ) +} + +func (store *Redis3SentinelStore) initialize(addresses []string, masterName string, username string, password string, database int) (err error) { + store.Client = redis.NewFailoverClient(&redis.FailoverOptions{ + MasterName: masterName, + SentinelAddrs: addresses, + Username: username, + Password: password, + DB: database, + MinRetryBackoff: time.Millisecond * 100, + MaxRetryBackoff: time.Minute * 1, + ReadTimeout: time.Second * 30, + WriteTimeout: time.Second * 5, + }) + store.redsync = redsync.New(goredis.NewPool(store.Client)) + return +} |
