【问题标题】:Node js redis set data at onceNode js redis一次设置数据
【发布时间】:2023-04-09 15:44:01
【问题描述】:

我开始学习redis和nodejs, 我从第三方 api 调用中获取数据。我想将此数据保存到我的 redis 服务器中。我能做到 但我有一个问题,如果我得到数据 在具有多个键的 json 数组中,我无法插入它。 我该如何解决这个问题?

我的数据是:

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

我想在不使用任何 for 循环的情况下立即将此数据保存为键值形式。 目前我正在使用类似的for循环

for(var i=0i<keys.length;;i++){
     redisClient.set(keys[i],data);
}

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

【问题讨论】:

标签: node.js redis node-redis


【解决方案1】:

我在我的应用程序中做了同样的事情。我试图通过唯一的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);
  }
});

【讨论】:

    【解决方案2】:

    使用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();
    });
    

    【讨论】:

      猜你喜欢
      • 2020-01-29
      • 2021-05-17
      • 1970-01-01
      • 1970-01-01
      • 2016-05-25
      • 2022-11-13
      • 1970-01-01
      • 2020-04-15
      • 2019-10-15
      相关资源
      最近更新 更多