使用此redis节点客户端 https://github.com/mranney/node_redis
我想在循环中同时保存三个用途。 但是只能保存最后一个用户才能保存? 在这里,我想将rahul0,rahul1,rahul2保存为redis中的用户 但只有rahul2才能得救。
var redis = require("redis"),
sys = require("sys"),
client = redis.createClient();
client.del("channels.59-O");
for(var j=0; j<3; j++) {
client.hgetall("channels.59-O", makeCallback(j));
function makeCallback(index) {
return function(err, result){
console.log('check '+sys.inspect(result));
if(!result.users) {
var channeldata={
'users':"rahul"+index
};
console.log('dsfsdc'+sys.inspect(channeldata));
client.hmset('channels.59-O', channeldata);
} else {
var users=result.users.split(',');
users.push("rahul"+index);
var channeldata={
'users':users.join(',')
};
console.log('check 1 '+sys.inspect(channeldata));
client.hmset('channels.59-O', channeldata);
}
};
}
}
请建议做什么?
答案 0 :(得分:0)
您每次都在使用相同的哈希键,因此最后一个用户hmset
将胜过其他用户。
更改
client.hmset('channels.59-O', channeldata)
到
client.hmset('channels.59-O:' + index, channeldata)
这样,每个用户都将拥有自己的哈希密钥,由后缀标识。
因此,在您的示例中,您可以在此之后访问(例如,通过redis-cli
),channels.59-O:0
访问rahul0
数据,channels.59-O:1
访问rahul1
数据等
此外,您必须管理他们的删除,client.del("channels.59-O")
现在必须是client.del("channels.59-O:0")
,client.del("channels.59-O:1")
等。
希望有所帮助。另请查看类似的答案:Writing a query to add multiple values to a key in REDIS Hashes?