c++如何连接Redis c++ hiredis库使用教程【指南】

8次阅读

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

c++ 如何连接 Redis c++ hiredis 库使用教程【指南】

使用 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_STRINGREDIS_REPLY_INTEGER)再取值
  • 务必调用 freeReplyObject(reply)redisFree(c) 避免内存泄漏

异常处理与连接复用建议

生产环境不能每次操作都新建连接。应封装连接池或至少做断线重连:

  • 检测连接失效:执行任意命令后若 c->err != 0,说明连接异常,需 redisFree 后重新 redisConnect
  • 避免阻塞主线程:hiredis 本身无异步接口;如需异步,可配合 libevent 使用 hiredis 的 async 模块,或切换到 redis-plus-plus(基于 Boost.ASIO)
  • 字符串安全:key/value 含空格或二进制数据时,改用 redisCommandArgv 避免格式化错误
text=ZqhQzanResources