首页 > redisCommand接口的用法--利用hiredis库获取MGET命令的结果的坑!

redisCommand接口的用法--利用hiredis库获取MGET命令的结果的坑!

工作中遇到如下业务场景:

我需要利用大批量的key去借助MGET命令来获取redis服务器上的记录,但是我却始终获取不到。当然我可以使用GET去一条一条地获取,但是这样一来,效率不高。所以最好的方式是,大批量一次性获取这样的记录。

我有问题的这段代码是这样的:



但是在构造MGET命令时,我犯了一个很弱智的错误,就是redisCommand命令这里,当使用%s时,表示后面的字符串中不含有空格的,但是我将这些key拼起来时,特意加了空格,这就是我获取失败的原因。这里是原型定义

void *redisCommand(redisContext *c, const char *format, ...);

这里说明一个redisCommand的用法,在C++环境中,可以只要format常量字符串,不要后面的变量,但是如果你非要的话,一定要保证它们是单个不含空格的字符串。

可以这样使用

reply = redisCommand(redis, "MGET %s %s", "foo", "name" );
if ( reply->type == REDIS_REPLY_ERROR )printf( "Error: %s
", reply->str );
else if ( reply->type != REDIS_REPLY_ARRAY )printf( "Unexpected type: %d
", reply->type );
else 
{int i;for ( i=0; ielements; ++i )printf( "Result: %s
", reply->element[i]->str );
}
freeReplyObject(reply);
也可以这样使用,这是我更正后的代码,

下面是运行结果图



说明如下:

1.使用SADD向SET database中添加记录时, 我们无需对添加的item加双引号.不要这样



而要这样



更多相关:

  •   cd 到盘符 例如D:. cd 到您的项目目录 去gitlab对应项目拷贝http的克隆地址  然后在gitlab命令窗口输入  git clone http://192.168.2.231/knowway/******.git 接下来就开干!!! 打开webstorm然后ctrl+alt+s  ...

  • nan 是not a number ,inf是无穷大 numpy.nan_to_num(x): 使用0代替数组x中的nan元素,使用有限的数字代替inf元素...

  • 简介 Simple Reference  基础CUDA示例,适用于初学者, 反映了运用CUDA和CUDA runtime APIs的一些基本概念.Utilities Reference  演示如何查询设备能力和衡量GPU/CPU 带宽的实例程序。Graphics Reference  图形化示例展现的是 CUDA, OpenGL,...

  • 在做开发的过程中难免需要给内核及下载的一些源码打补丁,所以我们先学习下Linux下使用如如何使用diff制作补丁以及如何使用patch打补丁。...

  • 我在调研ATS 4.2.3挂载SSD的过程中,遇到很多坑,特此详细记录我摸索的主要过程,以便大家以后避免之。 基本思路可以完全照搬参考文献[2][3] 下面的安装假定是以root用户身份进行的,Linux服务器已经安装好系统,磁盘已经做好分区。 首先需要认识我们的Linux服务器的硬件配置和软件情况 硬件配置: DELL...

  • 该博文整理一些在使用stl编程过程中遇到的小经验: 1.在多线程环境下面打印调试,如何使用cout及时刷新到屏幕上? 在C中我们经常这样使用: printf("Hello World "); fflush(stdout); 如果使用stl,我们可以这样使用: cout << "Hello World" << endl <...