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;
137 Redis(
const ComponentConfig& config,
const ComponentContext& component_context);
143 static constexpr std::string_view
kName =
"redis";
147 [[
deprecated(
"use GetClient()")]] std::shared_ptr<storages::
redis::impl::Sentinel> Client(
const std::string& name
152 static yaml_config::Schema GetStaticConfigSchema();
155 void OnConfigUpdate(
const dynamic_config::Snapshot& cfg);
156 void OnSecdistUpdate(
const storages::secdist::SecdistConfig& cfg);
159 const ComponentConfig& config,
160 const ComponentContext& component_context,
161 const testsuite::RedisControl& testsuite_redis_control
164 void WriteStatistics(utils::statistics::Writer& writer);
165 void WriteStatisticsPubsub(utils::statistics::Writer& writer);
167 std::shared_ptr<storages::
redis::impl::ThreadPools> thread_pools_;
168 std::unordered_map<std::string, std::shared_ptr<storages::
redis::impl::Sentinel>> sentinels_;
169 std::unordered_map<std::string, std::shared_ptr<storages::
redis::
Client>> clients_;
170 std::unordered_map<std::string, std::shared_ptr<storages::
redis::SubscribeClientImpl>> subscribe_clients_;
172 dynamic_config::Source config_;
173 concurrent::AsyncEventSubscriberScope config_subscription_;
174 concurrent::AsyncEventSubscriberScope secdist_subscription_;
176 utils::statistics::Entry statistics_holder_;
177 utils::statistics::Entry subscribe_statistics_holder_;
185inline constexpr bool kHasValidate<Redis> =
true;