bool xRedisClient::mget(const DBIArray &vdbi,   const KEYS &  keys, ReplyData& vDdata) {
    bool bRet = false;
    size_t n = vdbi.size();
    if (n!=keys.size()) {
        return bRet;
    }
    
    DataItem item;
    DBIArray::const_iterator iter_dbi = vdbi.begin();
    KEYS::const_iterator iter_key = keys.begin();
    for (;iter_key!=keys.end();++iter_key, ++iter_dbi) {
        const RedisDBIdx& dbi = *iter_dbi;
        SETDEFAULTIOTYPE(SLAVE);
        const string &key = *iter_key;
        if (key.length()>0) {
            bool ret = command_string(*iter_dbi, item.str, "GET %s", key.c_str());
            if (!ret) {
                item.type = REDIS_REPLY_NIL;
                item.str  = "";
            } else {
                item.type = REDIS_REPLY_STRING;
                bRet = true;
            }
            vDdata.push_back(item);
        }
    }
    return bRet;
}
Beispiel #2
0
int32_t xRedisClient::GetReply(xRedisContext* ctx, ReplyData& vData)
{
    //vData.clear();
    //ReplyData(vData).swap(vData);
    redisReply *reply;
    RedisConn *pRedisConn = static_cast<RedisConn *>(ctx->conn);
    int32_t ret = redisGetReply(pRedisConn->getCtx(), (void**)&reply);
    if (0==ret) {
        for (size_t i = 0; i < reply->elements; i++) {
            DataItem item;
            item.type = reply->element[i]->type;
            item.str.assign(reply->element[i]->str, reply->element[i]->len);
            vData.push_back(item);
        }
    }
    RedisPool::FreeReply(reply);
    return ret;
}