2

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

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

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

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

此外,如果在机器重新启动/重新启动时数据丢失也没有问题。

4

2 回答 2

1

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

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

var updateArray = function(arr, newData) {
    if (arr.length > 192) {
        arr = arr.slice(1); // Remove first entry
    }
    arr[arr.length] = newData;
    return arr;
};
于 2014-02-20T11:04:35.580 回答
0

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

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

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

于 2014-02-21T12:06:55.427 回答