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

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

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

该函数返回一个结构体redisContext。

函数原型: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;
}

执行结果为:

redis C接口hiredis 简单函数使用介绍相关推荐

  1. C/C++编程操作Redis数据库,hiredis包装redis数据库操作接口及测试(增删改查与连接)

    介绍一个实际应用场景,对于客户频繁需要查询的信息,可以将其放在redis内存数据库中,相当于一个缓存,每次查的时候先去redis内存数据库中去查询,如果查询不到再去oracle数据库中查询,这样提高了 ...

  2. Spring Boot + Redis 实现接口幂等性 | 分布式开发必知!

    点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 来源:http://tinyurl.com/y5k2sx5t >>阿里云8月最新 ...

  3. Sprinig Boot + Redis 实现接口幂等性,写得太好了!

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:收藏了!7 个开源的 Spring Boot 前后端分离优质项目个人原创+1博客:点击前往,查看更多 作者:wa ...

  4. 太好了 | 这篇写的太好了!Spring Boot + Redis 实现接口幂等性

    Hi ! 我是小小,今天是本周的第四篇,第四篇主要内容是 Spring Boot + Redis 实现接口幂等性 介绍 幂等性的概念是,任意多次执行所产生的影响都与一次执行产生的影响相同,按照这个含义 ...

  5. redis实现接口幂等性

    redis实现接口幂等性 1. 说明 幂等性的概念:任意多次执行所产生得影响均与一次执行的影响相同,对数据库的影响只能是一次性的,不能重复处理.在实际项目中,在客户端没限制幂等性,重复调用接口,导致接 ...

  6. Redis 6.0 新特性 ACL 介绍

    Redis 6.0 新特性 ACL 介绍 Intro 在 Redis 6.0 中引入了 ACL(Access Control List) 的支持,在此前的版本中 Redis 中是没有用户的概念的,其实 ...

  7. (41)FPGA面试技能提升篇(FC接口、GTX/GTH介绍)

    1.1 FPGA面试技能提升篇41(FC接口.GTX/GTH介绍) 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试技能提升篇41(FC接口.GTX/GTH介 ...

  8. redis rua解决库存问题_库存秒杀问题-redis解决方案- 接口限流

    /** * Created by PhpStorm. * redis 销量超卖秒杀解决方案 * redis 文档:http://doc.redisfans.com/ * ab -n 10000 -c ...

  9. 各种交换机接口及连接方法介绍【详细图文】

    各种交换机接口及连接方法介绍[详细图文] 交换机是使用非常广泛的网络设备,一个家庭如果有两台电脑,那么就很可能选择交换机来共享上网,而一个局域网,交换机是必不可少的设备. 各种交换机接口 交换机的接口 ...

最新文章

  1. 100教育:一场与信任赛跑的赌注
  2. vs2005 下的发邮件代码
  3. c# Parallel.For 并行编程 执行顺序测试
  4. 几张图可以理解GC JVM调优的内容
  5. 飞秋(FeiQ)海量的用户基数决定了这一模式
  6. Linux基本操作——文件相关
  7. 如何使用PowerShell将VS Code扩展导出到另一台计算机
  8. 修改主从服务器,搭建BIND主从服务器
  9. kubesphere_KubeSphere容器混合云一个人也能轻松运维的K8s
  10. Android入门之简单拨号器
  11. 开发时浏览器缓存问题
  12. 生命的书写,梦想的呈现
  13. java参数化查询_【转】参数化查询为什么能够防止SQL注入
  14. pyCharm汉化方法
  15. 国内开源的一款超好用 Redis 可视化工具,高颜值 UI,真香!!
  16. win7安装oracle 黑屏,苹果电脑装Windows7黑屏的原因和解决方案
  17. 【C++】洛谷P1873 [COCI 2011/2012 #5] EKO / 砍树
  18. 江西副省长吴忠琼接见孙立一行,共话打造世界级XR产业中心
  19. 大疆精灵4RTK的运用
  20. threejs 辉光的使用 在vue

热门文章

  1. 思科EtherChannel链路聚合
  2. 海思Hi3516CV500/Hi3516DV300处理参数比较
  3. Docker的常用命令大全
  4. OpenCV3_C++_Erode()图像的收缩 实例
  5. 微服系列之Feign使用HttpClient和OkHttp网络请求框架
  6. Office基础操作:Word 使用交叉引用的超链接后,如何一步操作返回至引用处
  7. metawrap quant_bins 的bin_abundance_table.tab结果理解
  8. js正则表达式(2)
  9. 软件行业职位及相关缩写
  10. Svn 命令行工具 操作 SVN 服务器