当前位置: 首页 > 编程笔记 >

C++使用redis的实例详解

马嘉勋
2023-03-14
本文向大家介绍C++使用redis的实例详解,包括了C++使用redis的实例详解的使用技巧和注意事项,需要的朋友参考一下

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#的FileSystemWatcher用法实例详解,包括了C#的FileSystemWatcher用法实例详解的使用技巧和注意事项,需要的朋友参考一下 本文实例详述了C#的FileSystemWatcher用法。分享给大家供大家参考。具体用法如下: FileSystemWatcher控件主要功能: 监控指定文件或目录的文件的创建、删除、改动、重命名等活动。可以动态地定义需要监控的文

  • 本文向大家介绍在c#中使用servicestackredis操作redis的实例代码,包括了在c#中使用servicestackredis操作redis的实例代码的使用技巧和注意事项,需要的朋友参考一下 声明一个客户端对象: 一 .基本KEY/VALUE键值对操作: 1. 添加/获取: 2. 获取数据 3. 获取指定索引位置数据 4. 移除: 二.存储对象: 1.通常方式(底层使用json序列化

  • 本文向大家介绍Redis在Laravel项目中的应用实例详解,包括了Redis在Laravel项目中的应用实例详解的使用技巧和注意事项,需要的朋友参考一下 前言 本文主要给大家介绍了关于Redis在Laravel项目中的应用实例,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: 在初步了解Redis在Laravel中的应用 那么我们试想这样的一个应用场景 一个文章或者帖子的浏览次数的

  • 本文向大家介绍C#事件实例详解,包括了C#事件实例详解的使用技巧和注意事项,需要的朋友参考一下 C#事件实例详解 C#和JAVA有许多相似的地方,设计思想差不多,语法及其相像,均传承自面向对象设计思想,灵感来自C++并取其精华去其“糟粕(二字持保留意见)”,中间语言、解释执行、一次编译、到处执行,出身豪门算得上是表兄弟关系,各自拥有庞大的拥趸,两种语言在发展的道路上你追我赶相互借鉴相互学习相互渗透

  • 本文向大家介绍C# Memcached缓存用法实例详解,包括了C# Memcached缓存用法实例详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#中Memcached缓存的用法,分享给大家供大家参考。具体方法如下: ICacheStrategy.cs文件如下: MemcachedStrategy.cs文件如下: 希望本文所述对大家的C#程序设计有所帮助。

  • 本文向大家介绍C++ 实现汉诺塔的实例详解,包括了C++ 实现汉诺塔的实例详解的使用技巧和注意事项,需要的朋友参考一下 C++ 实现汉诺塔的实例详解 前言: 有A,B,C三塔,N个盘(从小到大编号为1-N)起初都在A塔,现要将N个盘全部移动到C塔(按照河内塔规则),求最少移动次数以及每次的移动详细情况。 要求: 需要采用递归方法和消除尾递归两种方法编写。 盘数N由用户从标准输入读入,以一个整数表示