diff --git a/weed/command/scaffold/filer.toml b/weed/command/scaffold/filer.toml index aec409408..fc7b60fe1 100644 --- a/weed/command/scaffold/filer.toml +++ b/weed/command/scaffold/filer.toml @@ -167,6 +167,14 @@ database = 0 # This changes the data layout. Only add new directories. Removing/Updating will cause data loss. superLargeDirectories = [] +[redis2_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_cluster2] enabled = false addresses = [ diff --git a/weed/filer/redis2/redis_sentinel_store.go b/weed/filer/redis2/redis_sentinel_store.go new file mode 100644 index 000000000..802588b2b --- /dev/null +++ b/weed/filer/redis2/redis_sentinel_store.go @@ -0,0 +1,45 @@ +package redis2 + +import ( + "github.com/chrislusf/seaweedfs/weed/filer" + "github.com/chrislusf/seaweedfs/weed/util" + "github.com/go-redis/redis/v8" + "time" +) + +func init() { + filer.Stores = append(filer.Stores, &Redis2SentinelStore{}) +} + +type Redis2SentinelStore struct { + UniversalRedis2Store +} + +func (store *Redis2SentinelStore) GetName() string { + return "redis2_sentinel" +} + +func (store *Redis2SentinelStore) 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 *Redis2SentinelStore) 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, + }) + return +}