long long integer; /* 当返回类型为 REDIS_REPLY_INTEGER 时 */ size_t len; /* 返回的字符串长度 */ char *str; /* 当返回值类型为 REDIS_REPLY_ERROR 和 REDIS_REPLY_STRING */ size_t elements; /* 返回的数组长度 */ struct redisReply **element; /* 当返回值类型为 REDIS_REPLY_ARRAY */...
char *str; /* 当返回值类型为 REDIS_REPLY_ERROR 和 REDIS_REPLY_STRING */ size_t elements; /* 返回的数组长度 */ struct redisReply **element; /* 当返回值类型为 REDIS_REPLY_ARRAY */ } redisReply; type 有以下几种类型: REDIS_REPLY_STRING : 1 REDIS_REPLY_ARRAY : 2 REDIS_REPLY_INTEGER...
数组元素的个数保存在elements属性中,数组元素也以redisReply结构表示,指向数组元素的指针保存在element指针数组中,也就是说,指针数组element中保存了所有孩子节点的指针。 经过回复解析API函数redisReaderGetReply的解析之后,最终形成的redisReply结构树,非叶子节点只能是REDIS_REPLY_ARRAY类型,叶子节点的类型只能是基本类型。
if (r->type == REDIS_REPLY_ARRAY) out = sdscat(out,"(empty array)\n"); else if (r->type == REDIS_REPLY_MAP) out = sdscat(out,"(empty hash)\n"); else if (r->type == REDIS_REPLY_SET) out = sdscat(out,"(empty set)\n"); else if (r->type == REDIS_REPLY_PUSH) ...
REDIS_REPLY_STRING: 返回字符串标识。可以通过reply->str得到具体值,通过reply->len得到信息长度。 REDIS_REPLY_ARRAY: 返回数据集标识。数据集中元素的数目可以通过reply->elements获得,每个元素是个redisReply对象,元素值可以通过reply->element[..index..].*形式获得,用在获取多个数据结果的操作。
static sds cliFormatReplyTTY(redisReply *r, char *prefix) { sds out = sdsempty(); switch (r->type) { case REDIS_REPLY_ERROR: out = sdscatprintf(out,"(error) %s\n", r->str); break; case REDIS_REPLY_STATUS: out = sdscat(out,r->str); ...
simple-string-reply:总是OK,因为MSET不会失败 ##mget 返回所有指定的key的value。对于每个不对应string或者不存在的key,都返回特殊值nil。正因为此,这个操作从来不会失败。 返回值 array-reply: 指定的key对应的values的list setnx(防止set覆盖问题,具有原子性) ...
freeReplyObject(reply); while (true) { redisReply* reply = nullptr; redisGetReply(context, reinterpret_cast<void**>(&reply)); if (reply == nullptr) { std::cout << "redis command error" << std::endl; break; } if (reply->type == REDIS_REPLY_ARRAY && reply->elements== 3) { ...
/* Disconnect when there was an error reading the reply */ if(status != REDIS_OK) __redisAsyncDisconnect(ac); } 该函数循环调用redisGetReply,将解析器中输入缓存中的内容,组织成redisReply结构树,树的根节点通过参数reply返回。 在循环中,如果取得的reply为NULL,说明输入缓存已空,这种情况下,如果当前上...
type is REDIS_REPLY_INTEGER */size_t len;/* Length of string */char*str;/* Used for both REDIS_REPLY_ERROR and REDIS_REPLY_STRING */size_t elements;/* number of elements, for REDIS_REPLY_ARRAY */struct redisReply**element;/* elements vector for REDIS_REPLY_ARRAY */}redisReply; ...