class Sidekiq::RedisClientAdapter

def client_opts(options)

def client_opts(options)
  opts = options.dup
  if opts[:namespace]
    raise ArgumentError, "Your Redis configuration uses the namespace '#{opts[:namespace]}' but this feature is no longer supported in Sidekiq 7+. See https://github.com/sidekiq/sidekiq/blob/main/docs/7.0-Upgrade.md#redis-namespace."
  end
  opts.delete(:size)
  opts.delete(:pool_timeout)
  if opts[:network_timeout]
    opts[:timeout] = opts[:network_timeout]
    opts.delete(:network_timeout)
  end
  opts[:name] = opts.delete(:master_name) if opts.key?(:master_name)
  opts[:role] = opts[:role].to_sym if opts.key?(:role)
  opts[:driver] = opts[:driver].to_sym if opts.key?(:driver)
  # Issue #3303, redis-rb will silently retry an operation.
  # This can lead to duplicate jobs if Sidekiq::Client's LPUSH
  # is performed twice but I believe this is much, much rarer
  # than the reconnect silently fixing a problem; we keep it
  # on by default.
  opts[:reconnect_attempts] ||= 1
  opts
end

def initialize(options)

def initialize(options)
  opts = client_opts(options)
  @config = if opts.key?(:sentinels)
    RedisClient.sentinel(**opts)
  elsif opts.key?(:nodes)
    # Sidekiq does not support Redis clustering but Sidekiq Enterprise's
    # rate limiters are cluster-safe so we can scale to millions
    # of rate limiters using a Redis cluster. This requires the
    # `redis-cluster-client` gem.
    # Sidekiq::Limiter.redis = { nodes: [...] }
    RedisClient.cluster(**opts)
  else
    RedisClient.config(**opts)
  end
end

def new_client

def new_client
  CompatClient.new(@config.new_client)
end