C++用hiredis访问redis

2023-10-07 13:05
文章标签 c++ 访问 redis hiredis

本文主要是介绍C++用hiredis访问redis,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

C++用hiredis访问redis

    • 常用函数
    • 应用例子

常用函数

1)redisContext* redisConnect(const char *ip, int port)
用于建立与Redis数据库的连接。

2)void redisFree(redisContext *c)
用于释放与Redis数据库的连接。

3)redisReply* redisCommand(redisContext *c, const char *cmd)
用于发送命令到Redis服务器并等待服务器响应。

4)redisReply* redisCommandArgv(redisContext *c, int argc, const char **argv, const size_t *argvlen)
用于发送带有参数的命令到Redis服务器并等待服务器响应。

5)void freeReplyObject(redisReply r)
用于释放Redis服务器的响应结果。

6)redisReply* redisGetReply(redisContext *c, void **replyValue)
用于从Redis服务器获取单个响应结果。

7)redisReply* redisGetReplyFromReader(redisContext *c)
用于从Redis读取器中获取下一个响应结果。

8)int redisGetReplyStatus(redisContext *c, const redisReply *r)
用于获取Redis响应的状态码。

9)const char* redisGetReplyString(redisContext *c, const redisReply *r)
用于获取Redis响应的字符串值。

10)int redisGetReplyInt(redisContext *c, const redisReply *r)
用于获取Redis响应的整数值。

11)double redisGetReplyDouble(redisContext *c, const redisReply *r)
用于获取Redis响应的浮点数值。

12)void* redisGetReplyData(redisContext *c, const redisReply *r, size_t *len)
用于获取Redis响应的数据和数据长度。

应用例子

#include <iostream>  
#include <hiredis/hiredis.h>  int main() {  // 创建连接  redisContext *c = redisConnect("127.0.0.1", 6379);  if (c == NULL || c->err) {  std::cout << "Connection error: " << c->errstr << std::endl;  return 1;  }  // 设置数据库名称  const char *dbName = "mydb";  // 创建数据库  if (redisDbCreate(c, dbName) != REDIS_OK) {  std::cout << "Failed to create database: " << c->errstr << std::endl;  return 1;  }  // 增加数据  const char *key = "key1";  const char *value = "value1";  if (redisDbKeySet(c, dbName, key, value) != REDIS_OK) {  std::cout << "Failed to set key-value pair: " << c->errstr << std::endl;  return 1;  }  // 获取数据  redisReply *reply = redisDbKeyGet(c, dbName, key);  if (reply == NULL) {  std::cout << "Failed to get key-value pair: " << c->errstr << std::endl;  return 1;  }  std::cout << "Value for key '" << key << "': " << reply->str << std::endl;  freeReplyObject(reply);  // 删除数据  if (redisDbKeyDel(c, dbName, key) != REDIS_OK) {  std::cout << "Failed to delete key-value pair: " << c->errstr << std::endl;  return 1;  }  // 修改数据  const char *new_value = "value2";  if (redisDbKeySet(c, dbName, key, new_value) != REDIS_OK) {  std::cout << "Failed to set key-value pair: " << c->errstr << std::endl;  return 1;  }  // 查询数据  reply = redisDbKeysGet(c, dbName, NULL, 0);  if (reply == NULL || reply->type == REDIS_REPLY_NIL) {  std::cout << "No keys found in database." << std::endl;  freeReplyObject(reply);  } else {  std::cout << "Found keys in database:" << std::endl;  while (reply != NULL && reply->type != REDIS_REPLY_NIL) {  std::cout << reply->str << std::endl;  freeReplyObject(reply);  reply = reply->next;  }  }  // 关闭连接  redisFree(c);  return 0;  
}

这篇关于C++用hiredis访问redis的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/157934

相关文章

C++中NULL与nullptr的区别小结

《C++中NULL与nullptr的区别小结》本文介绍了C++编程中NULL与nullptr的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编... 目录C++98空值——NULLC++11空值——nullptr区别对比示例 C++98空值——NUL

C++ Log4cpp跨平台日志库的使用小结

《C++Log4cpp跨平台日志库的使用小结》Log4cpp是c++类库,本文详细介绍了C++日志库log4cpp的使用方法,及设置日志输出格式和优先级,具有一定的参考价值,感兴趣的可以了解一下... 目录一、介绍1. log4cpp的日志方式2.设置日志输出的格式3. 设置日志的输出优先级二、Window

Knife4j+Axios+Redis前后端分离架构下的 API 管理与会话方案(最新推荐)

《Knife4j+Axios+Redis前后端分离架构下的API管理与会话方案(最新推荐)》本文主要介绍了Swagger与Knife4j的配置要点、前后端对接方法以及分布式Session实现原理,... 目录一、Swagger 与 Knife4j 的深度理解及配置要点Knife4j 配置关键要点1.Spri

从入门到精通C++11 <chrono> 库特性

《从入门到精通C++11<chrono>库特性》chrono库是C++11中一个非常强大和实用的库,它为时间处理提供了丰富的功能和类型安全的接口,通过本文的介绍,我们了解了chrono库的基本概念... 目录一、引言1.1 为什么需要<chrono>库1.2<chrono>库的基本概念二、时间段(Durat

Redis出现中文乱码的问题及解决

《Redis出现中文乱码的问题及解决》:本文主要介绍Redis出现中文乱码的问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 问题的产生2China编程. 问题的解决redihttp://www.chinasem.cns数据进制问题的解决中文乱码问题解决总结

C++20管道运算符的实现示例

《C++20管道运算符的实现示例》本文简要介绍C++20管道运算符的使用与实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录标准库的管道运算符使用自己实现类似的管道运算符我们不打算介绍太多,因为它实际属于c++20最为重要的

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性:

MySQL中的InnoDB单表访问过程

《MySQL中的InnoDB单表访问过程》:本文主要介绍MySQL中的InnoDB单表访问过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、环境3、访问类型【1】const【2】ref【3】ref_or_null【4】range【5】index【6】

c++中的set容器介绍及操作大全

《c++中的set容器介绍及操作大全》:本文主要介绍c++中的set容器介绍及操作大全,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录​​一、核心特性​​️ ​​二、基本操作​​​​1. 初始化与赋值​​​​2. 增删查操作​​​​3. 遍历方

解析C++11 static_assert及与Boost库的关联从入门到精通

《解析C++11static_assert及与Boost库的关联从入门到精通》static_assert是C++中强大的编译时验证工具,它能够在编译阶段拦截不符合预期的类型或值,增强代码的健壮性,通... 目录一、背景知识:传统断言方法的局限性1.1 assert宏1.2 #error指令1.3 第三方解决