userver: redis::CommandControl Struct Reference
Loading...
Searching...
No Matches
redis::CommandControl Struct Reference

Redis command execution options. More...

#include <userver/storages/redis/command_control.hpp>

+ Collaboration diagram for redis::CommandControl:

Public Types

enum class  Strategy {
  kDefault ,
  kEveryDc ,
  kLocalDcConductor ,
  kNearestServerPing
}
 

Public Member Functions

 CommandControl (std::chrono::milliseconds timeout_single, std::chrono::milliseconds timeout_all, std::size_t max_retries, Strategy strategy=Strategy::kDefault, int best_dc_count=0, std::chrono::milliseconds max_ping_latency=std::chrono::milliseconds(0))
 
CommandControl MergeWith (const CommandControl &b) const
 
CommandControl MergeWith (const testsuite::RedisControl &) const
 
CommandControl MergeWith (RetryNilFromMaster) const
 
std::string ToString () const
 

Public Attributes

std::chrono::milliseconds timeout_single = std::chrono::milliseconds{500}
 Timeout for a single attempt to execute command.
 
std::chrono::milliseconds timeout_all = std::chrono::milliseconds{2000}
 Command execution timeout, including retries.
 
size_t max_retries = 4
 The maximum number of retries while executing command.
 
Strategy strategy = Strategy::kDefault
 Server instance selection strategy.
 
size_t best_dc_count = 0
 How many nearest DCs to use, 0 for no limit.
 
std::chrono::milliseconds max_ping_latency = std::chrono::milliseconds(0)
 Server latency limit.
 
bool force_request_to_master = false
 Force execution on master node.
 
bool allow_reads_from_master = false
 
bool account_in_statistics = true
 Controls if the command execution accounted in statistics.
 
std::optional< std::size_t > force_shard_idx
 If set, force execution on specific shard.
 
std::size_t chunk_size = 0
 Split execution of multi-key commands (i.e., MGET) to multiple requests.
 
ServerId force_server_id
 
bool force_retries_to_master_on_nil_reply = false
 If set, command retries are directed to the master instance.
 

Friends

class Sentinel
 
class storages::redis::Client
 

Detailed Description

Redis command execution options.

Definition at line 73 of file command_control.hpp.

Member Enumeration Documentation

◆ Strategy

Enumerator
kDefault 

Same as kEveryDc.

kEveryDc 

Send ~1/N requests to an instance with ping N ms.

kLocalDcConductor 

Send requests to Redis instances located in local DC (by Conductor info)

kNearestServerPing 

Send requests to 'best_dc_count' Redis instances with the min ping.

Definition at line 74 of file command_control.hpp.

Friends And Related Symbol Documentation

◆ Sentinel

friend class Sentinel
friend

Definition at line 143 of file command_control.hpp.

◆ storages::redis::Client

friend class storages::redis::Client
friend

Definition at line 144 of file command_control.hpp.

Member Data Documentation

◆ account_in_statistics

bool redis::CommandControl::account_in_statistics = true

Controls if the command execution accounted in statistics.

Definition at line 114 of file command_control.hpp.

◆ allow_reads_from_master

bool redis::CommandControl::allow_reads_from_master = false

Allow execution of readonly commands on master node along with replica nodes to facilitate load distribution.

Definition at line 111 of file command_control.hpp.

◆ best_dc_count

size_t redis::CommandControl::best_dc_count = 0

How many nearest DCs to use, 0 for no limit.

Definition at line 101 of file command_control.hpp.

◆ chunk_size

std::size_t redis::CommandControl::chunk_size = 0

Split execution of multi-key commands (i.e., MGET) to multiple requests.

Definition at line 120 of file command_control.hpp.

◆ force_request_to_master

bool redis::CommandControl::force_request_to_master = false

Force execution on master node.

Definition at line 107 of file command_control.hpp.

◆ force_retries_to_master_on_nil_reply

bool redis::CommandControl::force_retries_to_master_on_nil_reply = false

If set, command retries are directed to the master instance.

Definition at line 128 of file command_control.hpp.

◆ force_server_id

ServerId redis::CommandControl::force_server_id

If set, the user wants a specific Redis instance to handle the command. Sentinel may not redirect the command to other instances. strategy is ignored.

Definition at line 125 of file command_control.hpp.

◆ force_shard_idx

std::optional<std::size_t> redis::CommandControl::force_shard_idx

If set, force execution on specific shard.

Definition at line 117 of file command_control.hpp.

◆ max_ping_latency

std::chrono::milliseconds redis::CommandControl::max_ping_latency = std::chrono::milliseconds(0)

Server latency limit.

Definition at line 104 of file command_control.hpp.

◆ max_retries

size_t redis::CommandControl::max_retries = 4

The maximum number of retries while executing command.

Definition at line 95 of file command_control.hpp.

◆ strategy

Strategy redis::CommandControl::strategy = Strategy::kDefault

Server instance selection strategy.

Definition at line 98 of file command_control.hpp.

◆ timeout_all

std::chrono::milliseconds redis::CommandControl::timeout_all = std::chrono::milliseconds{2000}

Command execution timeout, including retries.

Definition at line 92 of file command_control.hpp.

◆ timeout_single

std::chrono::milliseconds redis::CommandControl::timeout_single = std::chrono::milliseconds{500}

Timeout for a single attempt to execute command.

Definition at line 89 of file command_control.hpp.


The documentation for this struct was generated from the following file: