使用Redis Multi()

时间:2015-12-07 08:30:45

标签: node.js redis node-redis

我有一组章节,我需要获取与每个部分有关的记录。 所有记录都存储在Redis中的Hash中。

但是当执行下面的代码时,它已经调用了Callback。

function GetData_Redis(sectionsList)
{
    var async = require('async');
    var sectionResults = []; 
    var regex = new RegExp(' ', 'g');

    var redisMultiClient = require("redis").createClient(6379, 'XXXX', { auth_pass: 'XXXX' }).multi();

    async.forEach(sectionsList, function taskIterator(sectionItem, callback) 
    {
        var sectionName = sectionItem.name.replace(regex, "");

        sectionName = sectionName.toLowerCase() + ":";

        for (var i = 0; i < 20; i++) 
        {
            redisMultiClient.hgetall(sectionName + i);
        }

        redisMultiClient.exec(function (error, replies) 
        {
            if (error) 
            {
                callback(err);
            }
            else 
            {
                if (replies.length > 0)
                    sectionResults.push({ section_id : sectionItem.section_id, name : sectionItem.name, articles : replies });

                callback(null);
            }
        });
    },
    function () 
    {
        redisMultiClient.quit();
        console.log("came here");
    });
}

但是当我在forEach中使用下面的代码并在执行后退出它时它可以工作,但是不能保持顺序。

var redisMultiClient = require("redis").createClient(6379, 'XXXX', { auth_pass: 'XXXX' }).multi(); 

所以我该如何解决呢。

0 个答案:

没有答案