Node.js Redis一次性设置数据

10
我开始学习Redis和Node.js,从第三方API调用中获取数据。我想将这些数据保存到我的Redis服务器中。我已经能够做到这一点,但是如果我得到的数据是具有多个键的JSON数组,我就无法插入它。我该如何解决这个问题?
我的数据是:
keys
[123,3435,455,455]
value
[{name:'shakti'},{name:'amit'},{name:'amiit'},{name:'sad'}]

我想将这些数据一次性保存为键值形式,而不使用任何循环。目前我正在使用for循环,如下所示:
for(var i=0i<keys.length;;i++){
     redisClient.set(keys[i],data);
}

请帮我解决这个问题。谢谢。

是的,您可以保存多个键的JSON,这可能会对您有所帮助: https://redislabs.com/blog/redis-as-a-json-store/ - user404
2个回答

6

我在我的应用程序中也做了同样的事情。我试图通过唯一的placeId保存每个记录。我的记录是:

[
  {
    "name": "Ranchi Railway Station",
    "placeId": "RAIL001",
    "category": "railway",
    "latitude": 3.09072,
    "longitude": 101.70076
  },
  {
    "name": "Delhi Airport",
    "placeId": "AIR129",
    "category": "airport",
    "latitude": 4.09072,
    "longitude": 100.70076
  }
]

我想通过一次性使用placeId来保存从查询中获取的每个记录到redis。 我使用了以下方式来缓存这些记录。
const placesRecords = {};
places.forEach((element) => {
  placesRecords[element.placeId] = JSON.stringify(element);
});

redisClient.mset(placesRecords, (err, reply) => {
  if(err) {
    console.log(" err: " + err);
  } else {
    console.log(" reply: " + reply);
  }
});

5

使用MSET命令。在Node.js中:

var keys = [123,3435,455,455]
var values = [{name:'shakti'},{name:'amit'},{name:'amiit'},{name:'sad'}]

var arr = []; 

for (var i = 0; i < keys.length; i++) {
    arr.push(keys[i]);
    arr.push(JSON.stringify(values[i]));
}

client.mset(arr, function(err, reply) {
    console.log(" reply: " + reply);
    console.log(" err: " + err);
    client.quit();
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接