8#include <unordered_map>
10#include <userver/components/component_base.hpp>
11#include <userver/components/component_fwd.hpp>
12#include <userver/dynamic_config/source.hpp>
13#include <userver/rcu/rcu.hpp>
14#include <userver/storages/redis/base.hpp>
15#include <userver/storages/redis/fwd.hpp>
16#include <userver/storages/redis/wait_connected_mode.hpp>
17#include <userver/storages/secdist/secdist.hpp>
18#include <userver/testsuite/redis_control.hpp>
19#include <userver/utils/statistics/entry.hpp>
21USERVER_NAMESPACE_BEGIN
27namespace storages::
redis {
29class SubscribeClientImpl;
130 Redis(
const ComponentConfig& config,
const ComponentContext& component_context);
140 [[
deprecated(
"use GetClient()")]] std::shared_ptr<storages::
redis::impl::Sentinel> Client(
const std::string& name
145 static yaml_config::Schema GetStaticConfigSchema();
148 void OnConfigUpdate(
const dynamic_config::Snapshot& cfg);
149 void OnSecdistUpdate(
const storages::
secdist::SecdistConfig& cfg);
152 const ComponentConfig& config,
153 const ComponentContext& component_context,
157 void WriteStatistics(
utils::statistics::Writer& writer);
158 void WriteStatisticsPubsub(
utils::statistics::Writer& writer);
160 std::shared_ptr<storages::
redis::impl::ThreadPools> thread_pools_;
161 std::unordered_map<std::string, std::shared_ptr<storages::redis::impl::Sentinel>> sentinels_;
162 std::unordered_map<std::string, std::shared_ptr<storages::redis::Client>> clients_;
163 std::unordered_map<std::string, std::shared_ptr<storages::redis::SubscribeClientImpl>> subscribe_clients_;
165 dynamic_config::Source config_;
166 concurrent::AsyncEventSubscriberScope config_subscription_;
167 concurrent::AsyncEventSubscriberScope secdist_subscription_;
169 utils::statistics::Entry statistics_holder_;
170 utils::statistics::Entry subscribe_statistics_holder_;
173 rcu::Variable<storages::redis::MetricsSettings> metrics_settings_;
174 rcu::Variable<storages::redis::PubsubMetricsSettings> pubsub_metrics_settings_;
178inline constexpr bool kHasValidate<Redis> =
true;