【问题标题】:Store data for x hours using NodeJS使用 NodeJS 存储数据 x 小时
【发布时间】:2014-02-20 10:57:15
【问题描述】:

我需要每 10 分钟收集一次数据并将该数据存储 32 小时。这意味着,我将拥有 192 个这些数据的条目,并且我需要经常访问这 192 个条目。

起初我想使用一个数组并将元素推入其中。如果我的计数器高于 tan 192,我将删除第一个元素(32 小时前收集的那个)。但是,我认为这可能会很慢。

另一种方法是将数据写入 linux 上的 /tmp 目录,实际上并不关心删除它,而只是读取最新的 192 个条目。

我没有找到太多关于这个谷歌搜索的信息,所以有人能指出我正确的方向吗?

另外,机器重启/重启时数据丢失也没问题。

【问题讨论】:

    标签: node.js store tmp


    【解决方案1】:

    将其存储在数组中比将其保存到磁盘并在每次要访问它时都必须重新读取任何文件要快几个数量级。

    速度实际上应该与这种类型的操作完全无关,因此您可以执行以下操作:

    var updateArray = function(arr, newData) {
        if (arr.length > 192) {
            arr = arr.slice(1); // Remove first entry
        }
        arr[arr.length] = newData;
        return arr;
    };
    

    【讨论】:

    • 那么它实际上比我想象的要容易。我只是担心切片阵列会太贵。但是,是的,写入文件并从 /tmp 读取它们当然要慢得多。谢谢!
    【解决方案2】:

    对于这种需求,我建议将数据存储在像 redis 或 memcache 这样的快速缓存中。您可以指定密钥自行过期的时间。这样它会非常非常快,您不必明确地管理它。所以我建议缓存来存储数据更长的时间,缓存服务器可以与你的应用服务器分开,这样数据在重启时不会丢失。

    我还想指出,不能信任 /tmp 目录来存储任何内容,因为它会不时被操作系统清理。

    如果要存储数据,请改用 db。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-24
      • 1970-01-01
      • 2021-07-17
      • 1970-01-01
      • 1970-01-01
      • 2020-07-30
      • 1970-01-01
      • 2023-02-14
      相关资源
      最近更新 更多