使用 hiredis 是 C++ 连接 Redis 最常用、轻量且稳定的方式;它为官方 C 客户端,兼容 C++,无需 Boost,支持同步阻塞操作,需手动管理连接与内存,并建议连接复用或封装连接池。

使用 C++ 连接 Redis,最常用、轻量且稳定的方式是通过 hiredis 官方 C 客户端库(官方推荐,C++ 可直接调用)。它不依赖 Boost 或其他大型框架,编译简单,适合嵌入式或高性能场景。
安装 hiredis(Linux/macOS)
hiredis 是 C 写的,但完全兼容 C++ 项目。推荐从源码编译安装,确保版本可控:
- 克隆仓库:git clone https://github.com/redis/hiredis.git
- 进入目录并编译:make && sudo make install(默认安装头文件到 /usr/local/include/hiredis,库到 /usr/local/lib/libhiredis.a/.so)
- 如需共享库运行时支持,加 sudo ldconfig
C++ 项目中链接 hiredis
编译时需显式链接 -lhiredis,并指定头文件路径(若非系统默认路径):
- g++ 示例:g++ main.cpp -o app -I/usr/local/include -L/usr/local/lib -lhiredis
- CMake 中添加:find_package(hiredis REQUIRED) 或手动 target_link_libraries(myapp hiredis)
- 注意:hiredis 默认不开启 SSL,如需 redis+tls,请用 hiredis 的 ssl 分支或改用 redis-plus-plus
基础连接与命令操作
hiredis 提供同步 API(最常用),所有操作阻塞直到完成。核心流程:连接 → 执行命令 → 解析回复 → 断开:
立即学习“C++免费学习笔记(深入)”;
- 用 redisConnect("127.0.0.1", 6379) 建立连接,检查 c->err 判断是否成功
- 发送命令用 redisCommand(c, "SET %s %s", key, val) 或 redisCommand(c, "GET %s", key)
- 返回值为 redisReply*,需检查 reply->type(如 REDIS_REPLY_STRING、REDIS_REPLY_INTEGER)再取值
- 务必调用 freeReplyObject(reply) 和 redisFree(c) 避免内存泄漏
异常处理与连接复用建议
生产环境不能每次操作都新建连接。应封装连接池或至少做断线重连:
- 检测连接失效:执行任意命令后若 c->err != 0,说明连接异常,需 redisFree 后重新 redisConnect
- 避免阻塞主线程:hiredis 本身无异步接口;如需异步,可配合 libevent 使用 hiredis 的 async 模块,或切换到 redis-plus-plus(基于 Boost.ASIO)
- 字符串安全:key/value 含空格或二进制数据时,改用 redisCommandArgv 避免格式化错误











