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/impl/base.hpp>
15#include <userver/storages/redis/impl/wait_connected_mode.hpp>
16#include <userver/testsuite/redis_control.hpp>
17#include <userver/utils/statistics/entry.hpp>
19USERVER_NAMESPACE_BEGIN
33class SubscribeClientImpl;
129 Redis(
const ComponentConfig& config,
130 const ComponentContext& component_context);
139 const std::string& name,
140 USERVER_NAMESPACE::redis::RedisWaitConnected wait_connected = {})
const;
141 [[
deprecated(
"use GetClient()")]] std::shared_ptr<redis::Sentinel> Client(
142 const std::string& name)
const;
144 const std::string& name,
145 USERVER_NAMESPACE::redis::RedisWaitConnected wait_connected = {})
const;
147 static yaml_config::Schema GetStaticConfigSchema();
150 void OnConfigUpdate(
const dynamic_config::Snapshot& cfg);
152 void Connect(
const ComponentConfig& config,
153 const ComponentContext& component_context,
156 void WriteStatistics(utils::statistics::Writer& writer);
157 void WriteStatisticsPubsub(utils::statistics::Writer& writer);
159 std::shared_ptr<redis::ThreadPools> thread_pools_;
160 std::unordered_map<std::string, std::shared_ptr<redis::Sentinel>> sentinels_;
161 std::unordered_map<std::string, std::shared_ptr<storages::redis::Client>>
163 std::unordered_map<std::string,
164 std::shared_ptr<storages::redis::SubscribeClientImpl>>
167 dynamic_config::Source config_;
168 concurrent::AsyncEventSubscriberScope config_subscription_;
170 utils::statistics::Entry statistics_holder_;
171 utils::statistics::Entry subscribe_statistics_holder_;
173 redis::MetricsSettings::StaticSettings static_metrics_settings_;
174 rcu::Variable<redis::MetricsSettings> metrics_settings_;
175 rcu::Variable<redis::PubsubMetricsSettings> pubsub_metrics_settings_;
179inline constexpr bool kHasValidate<Redis> =
true;