redis循环键_For循环从redis延迟获取项目

作者分享了在Node.js中使用node_redis遇到的并发问题,通过改进循环和回调机制,解决了数据更新延迟及部分项目跳过的挑战。通过`getTotal`函数重构,确保在所有Redis操作完成后回调,避免了并发带来的问题。
摘要由CSDN通过智能技术生成

我正在使用带有node_redis的Node.js,并遍历一个对象并在Redis中查找数据,然后返回结果。

我有这样的设置:

for (var key in items) {

if (items.hasOwnProperty(key)) {

app.client.llen(items[key].id+'_click', function(err, total) {

items[key].total = total;

});

}

}

callback(items);

问题在于,它会在完成对redis的调用之前循环通过。因此,在实际更新总值之前,将调用回调。由于延迟,它似乎也跳过了一些项目。

有没有更好的方法来解决这个问题?

谢谢!

编辑:

好的,所以我这样更新了它:

getTotal(function () {

callback(items);

});

getTotal = function (callback) {

var count = 1;

for (var key in items) {

if (items.hasOwnProperty(key)) {

app.client.llen(items[key].id + '_click', function (err, total) {

items[key].total = total;

if (items.length == count) {

callback();

}

count++;

});

};

}

这似乎可行,它在适当的时间触发了回调,但是似乎只有最后一个键正在进行总更新。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值