9#include <hiredis/hiredis.h>
24 using set_reply_t = std::unique_ptr<redisReply, std::function<void(redisReply*)>>;
38 : server_ip(srv_ip), port(port){};
61 return ctx !=
nullptr;
75 virtual set_reply_t set(
const std::string& key,
const std::string& value,
88 return last_expire_failed;
92 inline redisReply* generic_set(
const std::string& command,
const std::string& key,
93 const std::string& value);
94 inline redisReply* generic_read(
const std::string& command,
const std::string& key);
97 inline void assert_connected()
const;
99 inline void assert_valid_redis_reply(
const void* reply,
const std::string& command =
"");
101 std::string server_ip;
104 redisContext* ctx{
nullptr};
106 bool last_expire_failed{
false};
116 inline const char*
what() const noexcept
A wrapper for the hiredis C interface with multi-client support.
HiredisAdapter(const std::string &srv_ip="127.0.0.1", int port=REDIS_DEFAULT_PORT)
Initialize the adapter.
virtual bool last_expire_has_failed() const noexcept
virtual void disconnect()
virtual void expire(const std::string &key, timeout_t expire)
virtual sadd_reply_t sadd(const std::string &key, const std::string &value, const timeout_t expire=0)
virtual ~HiredisAdapter()
HiredisAdapter(const HiredisAdapter &)=delete
virtual smembers_reply_t smembers(const std::string &key)
set_reply_t smembers_reply_t
virtual void connect()
Connect to the Redis server.
virtual get_reply_t get(const std::string &key)
static constexpr int REDIS_DEFAULT_PORT
virtual set_reply_t set(const std::string &key, const std::string &value, const timeout_t expire=0)
HiredisAdapter(HiredisAdapter &&)=default
virtual bool is_connected() const noexcept
std::unique_ptr< redisReply, std::function< void(redisReply *)> > set_reply_t
A problem has occured whilst interacting with Redis.
const char * what() const noexcept
HiredisException(const std::string &msg)