我需要每 10 分钟收集一次数据并将该数据存储 32 小时。这意味着,我将有 192 个数据条目,我需要经常访问这 192 个条目。
起初我想使用一个数组,然后把元素推入其中。如果我的计数器高于 tan 192,我会删除第一个元素(32 小时前收集的元素)。但是,我认为这可能很慢。
另一种方法是将数据写入 linux 上的/tmp 目录,实际上并不真正关心删除它,而只是读取最新的 192 个条目。
我没有找到太多关于这个谷歌搜索的信息,所以谁能指出我正确的方向?
此外,如果在重新启动/重新启动计算机时丢失数据,则没有问题。
将其存储在数组中将比将其保存到磁盘并在每次要访问它时必须重新读取任何文件要快几个数量级。
速度实际上应该与这种类型的操作完全无关,因此您可以执行以下操作:
var updateArray = function(arr, newData) {
if (arr.length > 192) {
arr = arr.slice(1); // Remove first entry
}
arr[arr.length] = newData;
return arr;
};
对于这种要求,我建议将数据存储在快速缓存中,如redis或memcache。您可以指定密钥自行过期的时间。这样它将非常非常快,您不必明确管理它。因此,我建议缓存将数据存储更长的时间,并且缓存服务器可以与应用程序服务器分开,这样数据就不会在重新启动时丢失。
我还想指出,不能信任/tmp 目录来存储任何内容,因为它会作系统不时清理。
如果要存储数据,请改用 db。