【问题标题】:How to store list of dictionaries returned in Redis using NodeJS?如何使用 NodeJS 存储在 Redis 中返回的字典列表?
【发布时间】:2018-04-24 18:21:48
【问题描述】:

我正在编写一个 NodeJS 应用程序,它向第三方 api 发出 get 请求。这个 api 返回一个字典列表。我想把这个结果存储在我的 redis 客户端中。我该怎么做?

结果对象如下所示 -

[{"foo":123, "bar":456}, {"foo":789, "bar":012}]

【问题讨论】:

  • 在不知道如何从 redis 中检索数据的情况下很难给出很多答案,因为这将决定您如何将其输入到 redis 中。您希望如何检索数据?
  • @generalhenry 因此,一旦 redis 将上述字典列表放入 Redis,我会执行 lpop mylist 来获取值。这将返回字典类型的元素。

标签: node.js redis


【解决方案1】:

听起来您不需要从字典中查询元素,因此只需将它们作为 json 字符串存储在 redis 列表中就可以了。当您批量添加到列表中时,您可以对它们进行字符串化,只需确保使用某种形式的管道衬里,这样您就不会进行不需要的 api 调用。然后,您可以在需要时简单地解析 json 字符串字典。例如:

function setList (list, callback) {
  const pipeline = redis.pipeline();
  for (const dict of list) {
    pipeline.rpush('myList', JSON.stringify(dict));
  }
  pipeline.exec(callback);
}

function popList (callback) {
  redis.lpop('mylist', function (error, data) {
    if (error) { return callback(error) }
    callback(null, JSON.parse(data));
  });
}

【讨论】:

    【解决方案2】:

    假设您的数据为列表或字符串,我会这样做很简单,

          let redis = require("redis"),
          publisher = redis.createClient(option.redisPort, option.redisHost); 
          publisher.publish("id", DATA);  // here we publish the data. 
    

    你在寻找这样的东西吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-02
      • 1970-01-01
      • 2015-11-23
      • 2012-10-08
      • 2021-10-05
      • 1970-01-01
      • 2019-02-22
      • 2015-05-09
      相关资源
      最近更新 更多