NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
redis_connect.hpp
浏览该文件的文档.
1#ifndef NEFORCE_DATABASE_REDIS_CONNECT_HPP__
2#define NEFORCE_DATABASE_REDIS_CONNECT_HPP__
3
10
11#ifdef NEFORCE_SUPPORT_HIREDIS
12# include <hiredis/hiredis.h>
14NEFORCE_BEGIN_NAMESPACE__
15
21
27
43struct NEFORCE_API redis_connect final : idb_kv_connect {
44private:
45 ::redisContext* link_ = nullptr;
46 mutable string last_error_{};
47
48 ::redisReply* execute_command(string_view command, const vector<string_view>& args) const;
49 bool authenticate(const string& password) const;
50 bool select_database(const string& db_index) const;
51
52public:
56 redis_connect() = default;
57
63 ~redis_connect() override { close(); }
64
72 bool connect(const db_config& config) override;
73
79 bool reconnect(const db_config& config) override;
80
84 void close() noexcept override;
85
90 NEFORCE_DEPRECATED_FOR("Redis not support setting character sets")
91 bool set_character_set(const string&) const noexcept override { return false; }
92
97 NEFORCE_DEPRECATED_FOR("Redis not support setting character sets")
98 string_view get_character_set() const noexcept override { return ""; }
99
104 string_view get_error() const override;
105
110 uint32_t get_errno() const noexcept override { return link_ ? link_->err : 0; }
111
117 bool update(const string& sql) const override;
118
124 unique_ptr<idb_kv_result> query(const string& sql) const override;
125
130 bool connected() const noexcept override { return link_ != nullptr && !link_->err; }
131
136 bool is_valid() const override;
137
138 bool set(const string& key, const string& value) override;
139 bool setex(const string& key, const string& value, int seconds) override;
140 unique_ptr<idb_kv_result> get(const string& key) override;
141 bool del(const string& key) override;
142 bool exists(const string& key) override;
143 bool expire(const string& key, int seconds) override;
144
145 bool hset(const string& key, const string& field, const string& value) override;
146 unique_ptr<idb_kv_result> hget(const string& key, const string& field) override;
147 unique_ptr<idb_kv_result> hgetall(const string& key) override;
148
149 bool lpush(const string& key, const string& value) override;
150 bool rpush(const string& key, const string& value) override;
151 unique_ptr<idb_kv_result> lrange(const string& key, int start, int stop) override;
152
153 bool sadd(const string& key, const string& member) override;
154 unique_ptr<idb_kv_result> smembers(const string& key) override;
155};
156
163class NEFORCE_API redis_factory final : public idb_factory {
164public:
169 explicit redis_factory(db_config config) :
170 idb_factory(_NEFORCE move(config)) {}
171
177
183 idb_result* create_result(void* native_result) override;
184};
185 // Redis
187 // Database
189
190NEFORCE_END_NAMESPACE__
191#endif
192#endif // NEFORCE_DATABASE_REDIS_CONNECT_HPP__
idb_factory(db_config config)
构造函数
idb_result * create_result(void *native_result) override
创建Redis结果集对象
idb_connect * create_connect() override
创建Redis连接对象
redis_factory(db_config config)
构造函数
独占智能指针
动态大小数组容器
数据库抽象接口层
unsigned int uint32_t
32位无符号整数类型
duration< int64_t > seconds
秒持续时间
constexpr Iterator2 move(Iterator1 first, Iterator1 last, Iterator2 result) noexcept(noexcept(inner::__move_aux(first, last, result)))
移动范围元素
basic_string_view< char > string_view
字符字符串视图
数据库连接配置结构
数据库连接抽象基类
virtual void close()=0
关闭连接
virtual string_view get_character_set() const =0
获取字符集
virtual bool set_character_set(const string &encoding) const =0
设置字符集
键值存储连接抽象基类
数据库结果集抽象基类
bool connect(const db_config &config) override
建立Redis连接
bool rpush(const string &key, const string &value) override
RPUSH命令
bool is_valid() const override
检查连接是否有效
unique_ptr< idb_kv_result > lrange(const string &key, int start, int stop) override
LRANGE命令
unique_ptr< idb_kv_result > get(const string &key) override
GET命令
bool reconnect(const db_config &config) override
重新连接
bool del(const string &key) override
DEL命令
unique_ptr< idb_kv_result > hgetall(const string &key) override
HGETALL命令
unique_ptr< idb_kv_result > hget(const string &key, const string &field) override
HGET命令
uint32_t get_errno() const noexcept override
获取最后错误码
redis_connect()=default
默认构造函数
bool exists(const string &key) override
EXISTS命令
unique_ptr< idb_kv_result > smembers(const string &key) override
SMEMBERS命令
void close() noexcept override
关闭Redis连接
bool expire(const string &key, int seconds) override
EXPIRE命令
~redis_connect() override
析构函数
bool sadd(const string &key, const string &member) override
SADD命令
NEFORCE_DEPRECATED_FOR("Redis not support setting character sets") bool set_character_set(const string &) const noexcept override
设置字符集(Redis不支持)
NEFORCE_DEPRECATED_FOR("Redis not support setting character sets") string_view get_character_set() const noexcept override
获取字符集(Redis不支持)
unique_ptr< idb_kv_result > query(const string &sql) const override
执行查询命令
bool connected() const noexcept override
检查连接是否已建立
bool lpush(const string &key, const string &value) override
LPUSH命令
bool setex(const string &key, const string &value, int seconds) override
SETEX命令(带过期时间)
bool update(const string &sql) const override
执行非查询命令
bool set(const string &key, const string &value) override
SET命令
string_view get_error() const override
获取最后错误信息
bool hset(const string &key, const string &field, const string &value) override
HSET命令