diff options
Diffstat (limited to 'plugins/redis/plugin.go')
-rw-r--r-- | plugins/redis/plugin.go | 63 |
1 files changed, 41 insertions, 22 deletions
diff --git a/plugins/redis/plugin.go b/plugins/redis/plugin.go index 64b6024e..08bb7972 100644 --- a/plugins/redis/plugin.go +++ b/plugins/redis/plugin.go @@ -2,6 +2,7 @@ package redis import ( "github.com/go-redis/redis/v8" + "github.com/spiral/errors" "github.com/spiral/roadrunner/v2/interfaces/config" "github.com/spiral/roadrunner/v2/interfaces/log" ) @@ -11,44 +12,62 @@ const PluginName = "redis" type Plugin struct { // config for RR integration cfg *Config - // redis client - universalClient *redis.UniversalClient - clusterClient *redis.ClusterClient - client *redis.Client - sentinelClient *redis.SentinelClient + // logger + log log.Logger + // redis universal client + universalClient redis.UniversalClient } -func (s *Plugin) GetClient() *redis.Client { - return s.client -} - -func (s *Plugin) GetUniversalClient() *redis.UniversalClient { +func (s *Plugin) GetClient() redis.UniversalClient { return s.universalClient } -func (s *Plugin) GetClusterClient() *redis.ClusterClient { - return s.clusterClient -} +func (s *Plugin) Init(cfg config.Configurer, log log.Logger) error { + const op = errors.Op("redis plugin init") + s.cfg = &Config{} + s.cfg.InitDefaults() -func (s *Plugin) GetSentinelClient() *redis.SentinelClient { - return s.sentinelClient -} + err := cfg.UnmarshalKey(PluginName, &s.cfg) + if err != nil { + return errors.E(op, errors.Disabled, err) + } + + s.log = log + + s.universalClient = redis.NewUniversalClient(&redis.UniversalOptions{ + Addrs: s.cfg.Addrs, + DB: s.cfg.DB, + Username: s.cfg.Username, + Password: s.cfg.Password, + SentinelPassword: s.cfg.SentinelPassword, + MaxRetries: s.cfg.MaxRetries, + MinRetryBackoff: s.cfg.MaxRetryBackoff, + MaxRetryBackoff: s.cfg.MaxRetryBackoff, + DialTimeout: s.cfg.DialTimeout, + ReadTimeout: s.cfg.ReadTimeout, + WriteTimeout: s.cfg.WriteTimeout, + PoolSize: s.cfg.PoolSize, + MinIdleConns: s.cfg.MinIdleConns, + MaxConnAge: s.cfg.MaxConnAge, + PoolTimeout: s.cfg.PoolTimeout, + IdleTimeout: s.cfg.IdleTimeout, + IdleCheckFrequency: s.cfg.IdleCheckFreq, + ReadOnly: s.cfg.ReadOnly, + RouteByLatency: s.cfg.RouteByLatency, + RouteRandomly: s.cfg.RouteRandomly, + MasterName: s.cfg.MasterName, + }) -func (s *Plugin) Init(cfg config.Configurer, log log.Logger) error { - _ = cfg - _ = log - _ = s.cfg return nil } func (s *Plugin) Serve() chan error { errCh := make(chan error, 1) - return errCh } func (s Plugin) Stop() error { - return nil + return s.universalClient.Close() } func (s *Plugin) Name() string { |