summaryrefslogtreecommitdiff
path: root/plugins/redis/plugin.go
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/redis/plugin.go')
-rw-r--r--plugins/redis/plugin.go63
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 {