hiredis是redis数据库的C接口,目前只能在linux下使用,几个基本的函数就可以操作redis数据库了 。

函数原型:redisContext *redisConnect(const char *ip, int port);

说明:该函数用来连接redis数据库,参数为数据库的ip地址和端口,一般redis数据库的端口为6379;

函数返回值:该函数返回一个结构体redisContext;

类似的提供了一个函数redisContext* redisConnectWithTimeout(const char *ip, int port, timeval tv),以带有超时的方式连接redis服务器,同时获取与redis连接的上下文对象。

函数原型:void *redisCommand(redisContext *c, const char *format, ...);

说明:该函数执行命令,就如sql数据库中的SQL语句一样,只是执行的是redis数据库中的操作命令,第一个参数为连接数据库时返回的redisContext,剩下的参数为变参,就如C标准函数printf函数一样的变参。

函数返回值:返回值为void*,一般强制转换成为redisReply类型,以便做进一步处理。

函数原型void freeReplyObject(void *reply);

说明:释放redisCommand执行后返回的redisReply所占用的内存;

函数返回值:无。

函数原型:void redisFree(redisContext *c);

说明:释放redisConnect()所产生的连接。

函数返回值:无。

下面用一个简单的例子说明:

[cpp]  view plain copy print ?
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <stddef.h>
  4. #include <stdarg.h>
  5. #include <string.h>
  6. #include <assert.h>
  7. #include <hiredis/hiredis.h>
  8. void doTest()
  9. {
  10. //redis默认监听端口为6387 可以再配置文件中修改
  11. redisContext* c = redisConnect("127.0.0.1", 6379);
  12. if ( c->err)
  13. {
  14. redisFree(c);
  15. printf("Connect to redisServer faile\n");
  16. return ;
  17. }
  18. printf("Connect to redisServer Success\n");
  19. const char* command1 = "set stest1 value1";
  20. redisReply* r = (redisReply*)redisCommand(c, command1);
  21. if( NULL == r)
  22. {
  23. printf("Execut command1 failure\n");
  24. redisFree(c);
  25. return;
  26. }
  27. if( !(r->type == REDIS_REPLY_STATUS && strcasecmp(r->str,"OK")==0))
  28. {
  29. printf("Failed to execute command[%s]\n",command1);
  30. freeReplyObject(r);
  31. redisFree(c);
  32. return;
  33. }
  34. freeReplyObject(r);
  35. printf("Succeed to execute command[%s]\n", command1);
  36. const char* command2 = "strlen stest1";
  37. r = (redisReply*)redisCommand(c, command2);
  38. if ( r->type != REDIS_REPLY_INTEGER)
  39. {
  40. printf("Failed to execute command[%s]\n",command2);
  41. freeReplyObject(r);
  42. redisFree(c);
  43. return;
  44. }
  45. int length =  r->integer;
  46. freeReplyObject(r);
  47. printf("The length of 'stest1' is %d.\n", length);
  48. printf("Succeed to execute command[%s]\n", command2);
  49. const char* command3 = "get stest1";
  50. r = (redisReply*)redisCommand(c, command3);
  51. if ( r->type != REDIS_REPLY_STRING)
  52. {
  53. printf("Failed to execute command[%s]\n",command3);
  54. freeReplyObject(r);
  55. redisFree(c);
  56. return;
  57. }
  58. printf("The value of 'stest1' is %s\n", r->str);
  59. freeReplyObject(r);
  60. printf("Succeed to execute command[%s]\n", command3);
  61. const char* command4 = "get stest2";
  62. r = (redisReply*)redisCommand(c, command4);
  63. if ( r->type != REDIS_REPLY_NIL)
  64. {
  65. printf("Failed to execute command[%s]\n",command4);
  66. freeReplyObject(r);
  67. redisFree(c);
  68. return;
  69. }
  70. freeReplyObject(r);
  71. printf("Succeed to execute command[%s]\n", command4);
  72. redisFree(c);
  73. }
  74. int main()
  75. {
  76. doTest();
  77. return 0;
  78. }

执行结果为:

C++使用redis实例相关推荐

  1. 在一台机器上搭建多个redis实例

    2019独角兽企业重金招聘Python工程师标准>>> 默认Redis程序安装在/usr/local/redis目录下: 配置文件:/usr/local/redis/redis.co ...

  2. 使用Redis分区将数据分割到多个Redis实例

    分区是将所有的数据分割到多个Redis实例的过程,所以每个Redis实例存放的是所有键值的子集. Redis分区主要有两个目标: 1)允许使用多台计算机的内存来存放更大的数据.如果不做分区的话,单台计 ...

  3. shell模拟php多进程从redis获取数据(多个redis实例)

    背景:现在的数据已经写到了redis队列里面,完成了入栈的操作,后期打算从redis获取数据,完成出栈的操作,出栈后然后做一系列的逻辑处理 环境: VMware虚拟机  内存:1G   硬盘:60G  ...

  4. 获取redis实例绑定cpu的情况

    redis是一个单线模型的nosql类型的数据库,而目前接触到的服务器大都是多核的,比如8c,16c,32c,64c等等.为了充分利用主机,在一台主机上必然会部署多个redis实例,默认情况cpu会随 ...

  5. 如何把nodejs应用和SAP云平台上的Redis实例做绑定

    选择CloudFoundry上服务实例列表里的Redis实例,点击Actions标签栏下面的Bind图标: 从application列表里选择要绑定的应用实例: 选择好之后,点Save即可绑定. 绑定 ...

  6. redis实例python_生产消费者模式与python+redis实例运用(基础篇)

    根据这个图,我们举个简单的例子:假如你去某个餐厅吃饭,点了很多菜,厨师要一个一个菜的做,一个厨师不可能同时做出所有你点的菜,于是你有两个选择:第一个,厨师把所有菜都上齐了,你才开始吃:还有一个选择,做 ...

  7. 一台服务器搭建部署两个或多个Redis实例

    问题描述: 今天程序那边说测试服里面有两个项目,为了数据不冲突,想一台服务器搞两个Redis实例, 然后自己这边查询了一下,确实可以这么整,只需要区分端口号和区分配置文件方面就行, 原理与nginx和 ...

  8. 1000+Redis实例,100+集群,Redis 在海量数据和高并发下的优化实践

    墨墨导读:Redis 对于从事互联网技术工程师来说并不陌生,几乎所有的大中型企业都在使用 Redis 作为缓存数据库. 但是对于绝大多数企业来说只会用到它的最基础的 KV 缓存功能,还有很多 Redi ...

  9. redis实例python_使用python操作redis(管道)

    一.redis连接 redis提供两个类Redis和StrictRedis用于实现Redis的命令,StrictRedis用于实现大部分官方的命令,并使用官方的语法和命令,Redis是StrictRe ...

  10. 多个项目共用同一个redis_分区:如何在多个Redis实例之间拆分数据

    分区是将数据拆分为多个Redis实例的过程,因此每个实例将仅包含键的一个子集. 本文档的第一部分将向您介绍分区的概念,第二部分将向您展示Redis分区的替代方法. 为什么分区是有用的 对Redis进行 ...

最新文章

  1. 空间金字塔方法表示图像
  2. MYSQL慢日志探索
  3. hdu3033---加限制条件的0-1背包
  4. java反射 获取局部变量_Java反射:如何获取变量的名称?
  5. 天池 在线编程 木材加工(二分查找)
  6. java设计模式在线视频_Java设计模式之单例模式视频课程
  7. C语言实现电子音乐相册---粤嵌GEC6818嵌入式系统实训
  8. 大数据时代的全能日志分析专家--Splunk安装与实践
  9. Linux的巡检命令
  10. 前端获取后端16位主键id,后3位四舍五入
  11. MAC读写NTFS移动硬盘的解决办法
  12. ubuntu网络设置找不到有线连接_win7系统找不到网络打印机如何解决?局域网打印机共享怎么设置?...
  13. 浏览器cookie被禁掉,该如何去解决
  14. PDF解密工具—Cisdem PDF Password Remover
  15. Spring Gateway 报错java.lang.IllegalStateException: COMPLETED 解决
  16. Python-微信小程序飞机大战(类实现)
  17. RFID技术与畜牧业保险理赔的应用解决方案
  18. 【Tableau 设计提示16】如何在 Tableau 中使用标记(批注)
  19. 金融分析:图形可视化plotly绘图思路—多子图教程
  20. 1222222222

热门文章

  1. 《软技能》读书笔记(上)
  2. Visio 去交点处跨线
  3. Taro,小程序scroll-view 填满剩下的高度空间,关闭页面回跳(部分ios机型 滚动不到底部)
  4. 阿里云ACP云计算认证通过总结
  5. windows系统克隆虚拟机
  6. bitset 用法 (转)
  7. 怎样关闭任务栏的Microsoft资讯
  8. intellij idea 合并分支到主分支,主分支代码同步到某一分支
  9. html上标下标标签 示例_带有示例HTML th表标题标签教程
  10. 线性代数 | 知识点总结(上)