14namespace presage::smartspectra::redis_ipc {
24 RedisClient() =
default;
28 RedisClient(
const RedisClient&) =
delete;
29 RedisClient& operator=(
const RedisClient&) =
delete;
38 bool Connect(
const std::string& host,
int port, std::chrono::milliseconds timeout);
57 bool Publish(
const std::string& channel,
const std::string& payload);
65 bool Set(
const std::string& key,
const std::string& value);
72 bool Del(
const std::string& key);
80 std::optional<std::string>
LPop(
const std::string& key,
bool* ok);
86 const std::string&
last_error()
const {
return last_error_; }
96 enum class ReplyType {
106 ReplyType type = ReplyType::kError;
107 std::string string_value;
108 int64_t integer_value = 0;
109 std::vector<Reply> array_items;
112 bool Execute(
const std::vector<std::string>& command, Reply* reply);
113 static std::string Encode(
const std::vector<std::string>& command);
114 bool EnsureConnected()
const;
115 bool SendAll(
const std::string& data);
117 bool EnsureAvailable(
size_t bytes);
118 bool ReadChar(
char* ch);
119 bool ReadLine(std::string* line);
120 bool ReadBulk(std::string* value,
size_t length);
121 bool ParseReply(Reply* reply);
122 void CompactBuffer();
125 std::chrono::milliseconds timeout_{1000};
128 mutable std::string last_error_;
130 size_t max_bulk_string_bytes_ = 134217728;
131 size_t max_array_elements_ = 1000000;
bool Connect(const std::string &host, int port, std::chrono::milliseconds timeout)
Definition redis_client.cpp:97
std::optional< std::string > LPop(const std::string &key, bool *ok)
Definition redis_client.cpp:204
bool Set(const std::string &key, const std::string &value)
Definition redis_client.cpp:188
void Close()
Definition redis_client.cpp:163
const std::string & last_error() const
Definition redis_client.hpp:86
void SetResponseLimits(size_t max_bulk_string_bytes, size_t max_array_elements)
Definition redis_client.cpp:92
bool Del(const std::string &key)
Definition redis_client.cpp:196
bool Publish(const std::string &channel, const std::string &payload)
Definition redis_client.cpp:180
bool Ping()
Definition redis_client.cpp:172