C++使用redis实例
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()所产生的连接。
函数返回值:无。
下面用一个简单的例子说明:
- #include <stdio.h>
- #include <stdlib.h>
- #include <stddef.h>
- #include <stdarg.h>
- #include <string.h>
- #include <assert.h>
- #include <hiredis/hiredis.h>
- void doTest()
- {
- //redis默认监听端口为6387 可以再配置文件中修改
- redisContext* c = redisConnect("127.0.0.1", 6379);
- if ( c->err)
- {
- redisFree(c);
- printf("Connect to redisServer faile\n");
- return ;
- }
- printf("Connect to redisServer Success\n");
- const char* command1 = "set stest1 value1";
- redisReply* r = (redisReply*)redisCommand(c, command1);
- if( NULL == r)
- {
- printf("Execut command1 failure\n");
- redisFree(c);
- return;
- }
- if( !(r->type == REDIS_REPLY_STATUS && strcasecmp(r->str,"OK")==0))
- {
- printf("Failed to execute command[%s]\n",command1);
- freeReplyObject(r);
- redisFree(c);
- return;
- }
- freeReplyObject(r);
- printf("Succeed to execute command[%s]\n", command1);
- const char* command2 = "strlen stest1";
- r = (redisReply*)redisCommand(c, command2);
- if ( r->type != REDIS_REPLY_INTEGER)
- {
- printf("Failed to execute command[%s]\n",command2);
- freeReplyObject(r);
- redisFree(c);
- return;
- }
- int length = r->integer;
- freeReplyObject(r);
- printf("The length of 'stest1' is %d.\n", length);
- printf("Succeed to execute command[%s]\n", command2);
- const char* command3 = "get stest1";
- r = (redisReply*)redisCommand(c, command3);
- if ( r->type != REDIS_REPLY_STRING)
- {
- printf("Failed to execute command[%s]\n",command3);
- freeReplyObject(r);
- redisFree(c);
- return;
- }
- printf("The value of 'stest1' is %s\n", r->str);
- freeReplyObject(r);
- printf("Succeed to execute command[%s]\n", command3);
- const char* command4 = "get stest2";
- r = (redisReply*)redisCommand(c, command4);
- if ( r->type != REDIS_REPLY_NIL)
- {
- printf("Failed to execute command[%s]\n",command4);
- freeReplyObject(r);
- redisFree(c);
- return;
- }
- freeReplyObject(r);
- printf("Succeed to execute command[%s]\n", command4);
- redisFree(c);
- }
- int main()
- {
- doTest();
- return 0;
- }
执行结果为:
C++使用redis实例相关推荐
- 在一台机器上搭建多个redis实例
2019独角兽企业重金招聘Python工程师标准>>> 默认Redis程序安装在/usr/local/redis目录下: 配置文件:/usr/local/redis/redis.co ...
- 使用Redis分区将数据分割到多个Redis实例
分区是将所有的数据分割到多个Redis实例的过程,所以每个Redis实例存放的是所有键值的子集. Redis分区主要有两个目标: 1)允许使用多台计算机的内存来存放更大的数据.如果不做分区的话,单台计 ...
- shell模拟php多进程从redis获取数据(多个redis实例)
背景:现在的数据已经写到了redis队列里面,完成了入栈的操作,后期打算从redis获取数据,完成出栈的操作,出栈后然后做一系列的逻辑处理 环境: VMware虚拟机 内存:1G 硬盘:60G ...
- 获取redis实例绑定cpu的情况
redis是一个单线模型的nosql类型的数据库,而目前接触到的服务器大都是多核的,比如8c,16c,32c,64c等等.为了充分利用主机,在一台主机上必然会部署多个redis实例,默认情况cpu会随 ...
- 如何把nodejs应用和SAP云平台上的Redis实例做绑定
选择CloudFoundry上服务实例列表里的Redis实例,点击Actions标签栏下面的Bind图标: 从application列表里选择要绑定的应用实例: 选择好之后,点Save即可绑定. 绑定 ...
- redis实例python_生产消费者模式与python+redis实例运用(基础篇)
根据这个图,我们举个简单的例子:假如你去某个餐厅吃饭,点了很多菜,厨师要一个一个菜的做,一个厨师不可能同时做出所有你点的菜,于是你有两个选择:第一个,厨师把所有菜都上齐了,你才开始吃:还有一个选择,做 ...
- 一台服务器搭建部署两个或多个Redis实例
问题描述: 今天程序那边说测试服里面有两个项目,为了数据不冲突,想一台服务器搞两个Redis实例, 然后自己这边查询了一下,确实可以这么整,只需要区分端口号和区分配置文件方面就行, 原理与nginx和 ...
- 1000+Redis实例,100+集群,Redis 在海量数据和高并发下的优化实践
墨墨导读:Redis 对于从事互联网技术工程师来说并不陌生,几乎所有的大中型企业都在使用 Redis 作为缓存数据库. 但是对于绝大多数企业来说只会用到它的最基础的 KV 缓存功能,还有很多 Redi ...
- redis实例python_使用python操作redis(管道)
一.redis连接 redis提供两个类Redis和StrictRedis用于实现Redis的命令,StrictRedis用于实现大部分官方的命令,并使用官方的语法和命令,Redis是StrictRe ...
- 多个项目共用同一个redis_分区:如何在多个Redis实例之间拆分数据
分区是将数据拆分为多个Redis实例的过程,因此每个实例将仅包含键的一个子集. 本文档的第一部分将向您介绍分区的概念,第二部分将向您展示Redis分区的替代方法. 为什么分区是有用的 对Redis进行 ...
最新文章
- 空间金字塔方法表示图像
- MYSQL慢日志探索
- hdu3033---加限制条件的0-1背包
- java反射 获取局部变量_Java反射:如何获取变量的名称?
- 天池 在线编程 木材加工(二分查找)
- java设计模式在线视频_Java设计模式之单例模式视频课程
- C语言实现电子音乐相册---粤嵌GEC6818嵌入式系统实训
- 大数据时代的全能日志分析专家--Splunk安装与实践
- Linux的巡检命令
- 前端获取后端16位主键id,后3位四舍五入
- MAC读写NTFS移动硬盘的解决办法
- ubuntu网络设置找不到有线连接_win7系统找不到网络打印机如何解决?局域网打印机共享怎么设置?...
- 浏览器cookie被禁掉,该如何去解决
- PDF解密工具—Cisdem PDF Password Remover
- Spring Gateway 报错java.lang.IllegalStateException: COMPLETED 解决
- Python-微信小程序飞机大战(类实现)
- RFID技术与畜牧业保险理赔的应用解决方案
- 【Tableau 设计提示16】如何在 Tableau 中使用标记(批注)
- 金融分析:图形可视化plotly绘图思路—多子图教程
- 1222222222