使用hiredis库可高效实现C++与Redis交互。首先安装libhiredis-dev或hiredis-devel,再通过redisConnect连接Redis服务器,调用redisCommand执行SET、GET等命令,操作字符串、列表等数据类型,并用freeReplyObject释放响应结果,最后redisFree断开连接。编译时需链接-hiredis。

在C++中连接和操作Redis数据库,最常用的方式是使用官方推荐的C客户端库 hiredis。由于Redis本身是用C语言编写的,hiredis轻量高效,被广泛用于C/C++项目中的NoSQL数据交互。
在开始前,需要先安装 hiredis 动态库和头文件。以 Ubuntu/Debian 系统为例:
sudo apt-get update sudo apt-get install libhiredis-dev
如果你使用的是 CentOS 或 Fedora:
sudo yum install hiredis-devel
也可以从 GitHub 源码编译安装:
git clone https://github.com/redis/hiredis.git
cd hiredis
make
sudo make install
sudo ldconfig // 刷新共享库缓存
</font>
<H3>编写 C++ 程序连接 Redis</H3>
<p>使用 hiredis 连接 Redis 非常简单。以下是一个基本的同步连接示例,展示如何设置键值、获取值并处理响应。</p>
<font face="Courier New">
<pre class="brush:php;toolbar:false;">
#include <hiredis/hiredis.h>
#include <iostream>
int main() {
// 1. 连接 Redis 服务器
redisContext *context = redisConnect("127.0.0.1", 6379);
if (context == nullptr || context->err) {
if (context) {
std::cerr << "连接错误: " << context->errstr << std::endl;
} else {
std::cerr << "无法分配 redis context" << std::endl;
}
return -1;
}
std::cout << "成功连接到 Redis 服务器!" << std::endl;
// 2. 执行 SET 命令
redisReply *reply = (redisReply*)redisCommand(context, "SET mykey 'Hello from C++'");
if (reply == nullptr) {
std::cerr << "执行命令失败: " << context->errstr << std::endl;
redisFree(context);
return -1;
}
std::cout << "SET 命令执行结果: " << reply->str << std::endl;
freeReplyObject(reply);
// 3. 执行 GET 命令
reply = (redisReply*)redisCommand(context, "GET mykey");
if (reply != nullptr && reply->type == REDIS_REPLY_STRING) {
std::cout << "GET mykey 的值: " << reply->str << std::endl;
} else {
std::cout << "键不存在或返回类型错误" << std::endl;
}
freeReplyObject(reply);
// 4. 断开连接
redisFree(context);
return 0;
}
编译时需要链接 hiredis 库:
g++ -o redis_demo redis_demo.cpp -lhiredis
确保 Redis 服务正在运行:
redis-server --daemonize yes
然后运行程序:
SuperDesign
开源的UI设计AI智能体
216
查看详情
./redis_demo
输出应为:
成功连接到 Redis 服务器! SET 命令执行结果: OK GET mykey 的值: Hello from C++
Redis 支持多种数据结构,如列表、哈希、集合等。你可以通过发送相应的命令来操作它们。
例如,向列表添加元素并读取:
// 添加元素到列表
reply = (redisReply*)redisCommand(context, "LPUSH mylist 'item1'");
freeReplyObject(reply);
reply = (redisReply*)redisCommand(context, "LPUSH mylist 'item2'");
freeReplyObject(reply);
// 获取列表长度
reply = (redisReply*)redisCommand(context, "LLEN mylist");
if (reply->type == REDIS_REPLY_INTEGER) {
std::cout << "列表长度: " << reply->integer << std::endl;
}
freeReplyObject(reply);
// 获取所有元素
reply = (redisReply*)redisCommand(context, "LRANGE mylist 0 -1");
if (reply->type == REDIS_REPLY_ARRAY) {
for (size_t i = 0; i < reply->elements; ++i) {
std::cout << "元素 " << i << ": " << reply->element[i]->str << std::endl;
}
}
freeReplyObject(reply);
注意判断 reply->type 类型,避免空指针或类型不匹配导致崩溃。
hiredis 还提供异步 API(hiredis async),适用于高并发场景。它基于事件循环,可与 libevent、libev 等集成,实现非阻塞通信。
对于大多数中小型应用,同步接口已足够高效。
基本上就这些。掌握 hiredis 后,C++ 与 Redis 的交互变得直接而高效。以上就是C++怎么连接和操作Redis数据库_C++ NoSQL数据库交互与hiredis库使用的详细内容,更多请关注其它相关文章!
# centos
# redis
# stream
# ios
# c++
# ai
# ubuntu
# c语言
# github
# git
# 中山市网络营销推广招聘
# seo优化的简单定义
# 沧州黄骅网站建设
# 个人网站建设建站模板
# 天水网站建设网站推广
# 惠民网站推广方案
# 光明微营销推广
# 潜江网站设计推广中心
# 网站建设接单平台价钱低
# 网站怎么优化哪好
# 横评
# 内存管理
# 进阶
# 是一个
# 的是
# 时需
# 如何处理
# 连接到
# 数据处理
# 数据结构
# red
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
优化推广96088 】
【
技术知识133117 】
【
IDC资讯59369 】
【
网络运营7196 】
【
IT资讯61894 】
相关推荐:
掌握产品代码正则表达式:避免常见陷阱与精确匹配
我的世界官方网址入口 我的世界游戏主页直达入口
C#解析并修改XML后保存 如何确保格式与编码的正确性
Lar*el Eloquent:高效删除多对多关系中无关联子记录的父模型
荣耀盒子应用管理技巧
如何在CSS中设置背景图像:一个全面指南
qq邮箱格式填写示例 qq邮箱标准填写规范
豆包AI怎样为教育场景定制答疑逻辑_为教育场景定制豆包AI答疑逻辑方案【方案】
Win10关闭UAC用户账户控制的方法 Win10降低安全提示等级【技巧】
Win10如何查看已安装的更新补丁 Win10卸载指定更新教程【教程】
铁路12306官网入口 铁路12306中国铁路官网登录首页
《下一站江湖2》独孤剑诀习得方法
Flash AS3.0简易相册制作
J*a里如何处理ArithmeticException并防止除零_算术异常防护策略解析
使用document.execCommand实现Web文本编辑器加粗/取消加粗
支付宝登录刷脸不是本人如何解决
优化Asyncio嵌套函数调度:使用生产者-消费者模式实现并发流处理
Mac怎么关闭按键声音_Mac键盘打字音效设置
Dagster资产间数据传递与用户配置管理教程
iPhone12是否要更新ios16
《气泡星球》兑换码礼包大全
J*aScript文本高亮功能优化:解决多词匹配错误与精确分割策略
QQ网页版官方账号登录入口 QQ网页版网页版入口快速导航
win11怎么更改账户类型 Win11标准用户和管理员权限切换【教程】
构建可配置的J*aScript加权点击计数器与共享总计功能
在VS Code中利用AI辅助进行代码迁移
抖音号已注销怎么解绑企业认证?不解绑企业认证会怎样?
j*a中ArrayBlockingQueue的使用
花生壳内网映射新方案
Leaflet地图弹出窗口图片动态显示:避免缺失图标的专业指南
Chart.js 教程:自定义插件实现图表与图例间距调整
2025考研成绩查询时间入口分享
Flexbox布局实践:实现底部页脚与顶部粘性导航条的完美结合
汽水音乐官网网页版入口 汽水音乐官网网页版在线入口
在Django单元测试中优雅处理信号:基于环境的条件执行策略
OTT月报 | 2025年9月智能电视大数据报告
哔哩哔哩在线观看入口 B站官网免费进入
解决VS Code中Python版本冲突与输出异常的指南
解决异步Python机器人中同步操作的阻塞问题
win11讲述人怎么关闭 Win11屏幕朗读辅助功能禁用方法【技巧】
基于 Flink 和 Kafka 实现高效流处理:连续查询与时间窗口
Lar*el Dusk 测试中管理浏览器权限:以剪贴板访问为例
《崩坏:星穹铁道》3.6版本异相仲裁打法及配队推荐
b站网页版入口 哔哩哔哩官方网站直接进入
sublime text 4如何安装_最新版sublime下载与汉化教程
微信如何设置字体大小_微信字体设置的阅读舒适
苹果SE如何开启单手模式_苹果SE单手操作功能
MySQL多重关联查询:利用别名高效获取同一表的多个关联字段
使用 J*aScript 随机化 CSS Grid 布局中的元素顺序
如何外贸网站设计-能留住客户提升用户体验!
2025-11-28
运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。