信息发布→ 登录 注册 退出

c++怎么连接和操作Redis数据库_c++键值存储访问与连接库使用

发布时间:2025-11-14

点击量:
c++kquote>使用redis-plus-plus库可高效连接和操作Redis数据库,基于hiredis提供现代C++接口。1. 安装libhiredis-dev及redis-plus-plus源码编译安装。2. 通过Redis对象实现set、get、lpush、lrange等操作,支持超时设置。3. 配置ConnectionOptions和ConnectionPoolOptions实现连接池,提升多线程性能;支持发布订阅模式,通过subscriber.subscribe监听频道并轮询消息。4. 使用try-catch捕获RedisException处理异常,结合RAII管理资源,确保连接安全释放。该方案简洁高效,适用于大多数C++项目。

在C++中连接和操作Redis数据库,通常使用第三方库来实现。由于Redis官方没有提供C++客户端,开发者依赖成熟的开源C++ Redis客户端库进行键值存储的访问与操作。最常用的是 hiredis(官方C客户端)配合 redis-plus-plus 这类封装良好的C++接口库。

1. 使用 hiredis 和 redis-plus-plus 连接Redis

hiredis 是Redis官方推荐的C语言客户端,性能高但API较底层。为了更方便地在C++中使用,推荐搭配 redis-plus-plus,它基于hiredis构建,提供了现代C++风格的接口(支持STL容器、异常处理等)。

安装依赖库:

在Ubuntu/Debian系统上:

sudo apt-get install libhiredis-dev

git clone https://github.com/sewenew/redis-plus-plus.git

cd redis-plus-plus && mkdir build && cd build

cmake ..

make && sudo make install

确保已安装编译工具链和cmake。

2. C++代码连接Redis示例

使用 redis-plus-plus 进行同步连接和基本操作:

#include iostream>
#include
using namespace sw::redis;

int main() {
try {
// 创建Redis连接对象
auto redis = Redis("tcp://127.0.0.1:6379");

// 设置一个字符串键值
redis.set("name", "Alice");

// 获取值
auto val = redis.get("name");
if (val) {
std::cout }

// 操作List
redis.lpush("tasks", {"task1", "task2"});
auto tasks = redis.lrange("tasks", 0, -1);
for (const auto &task : tasks) {
std::cout }

// 设置带过期时间的键
redis.setex("token", std::chrono::seconds(60), "abc123");

} catch (const RedisException &e) {
std::cerr }

return 0;
}

编译命令:

g++ -std=c++17 your_file.cpp -lredis++ -lhiredis -pthread -o redis_demo

3. 支持高级功能:连接池、异步操作、发布订阅

redis-plus-plus 支持连接池,适用于多线程环境:

// 配置连接选项
ConnectionOptions connection_opts;
connection_opts.host = "127.0.0.1";
connection_opts.port = 6379;
connection_opts.db = 0;

// 配置连接池
ConnectionPoolOptions pool_opts;
pool_opts.size = 10; // 连接池大小

Redis redis(ConnectionPool(connection_opts, pool_opts));

多个线程可安全共享同一个 Redis 对象。

也支持发布/订阅模式:

auto subscriber = redis.subscriber();
subscriber.on_message([](const std::string& channel, const std::string& msg) {
std::cout });

subscriber.subscribe("chat");

while (true) {
subscriber.poll(std::chrono::milliseconds(100));
}

4. 错误处理与资源管理

始终用 try-catch 包裹Redis操作,捕获 RedisException 类型异常。网络中断、序列化错误、命令语法错误都会抛出异常。

避免长时间持有连接,建议结合RAII或智能指针管理生命周期。使用连接池时,库会自动管理底层连接的复用与释放。

基本上就这些。只要配置好库环境,C++操作Redis就跟调用本地函数一样自然。关键是选对库——redis-plus-plus 简洁高效,适合大多数项目需求。

标签:# 数据库  # int  # 指针  # cerr  # 接口  # using  # Namespace  # 线程  # 多线程  # channel  # 对象  # 异步  # 字符串  # https  # debian  # 连接池  # 客户端  # 适用于  # 键值  # 的是  # 多个  # 长时间  # 这类  # 第三方  # if  # redis  # git  # github  # c语言  # ubuntu  # 工具  # ai  # ios  # stream  # red  # String  # c++  # for  # while  # 封装  # include  # try  # catch  # Error  # Token  # const  # auto  
在线客服
服务热线

服务热线

4008888355

微信咨询
二维码
返回顶部
×二维码

截屏,微信识别二维码

打开微信

微信号已复制,请打开微信添加咨询详情!