【问题标题】:Best way to store data temporarily?临时存储数据的最佳方式?
【发布时间】:2018-12-01 00:53:06
【问题描述】:

我正在用 Python 构建一种监控工具,我想在其中短期保留某些统计信息。我只想为一个统计信息保留最多 30 个条目,并在新条目进入时覆盖旧条目。这样,只保留 30 个最近的条目。我应该使用哪种文件(我将拥有多个不同的统计数据,所有这些数据我只想保留他们最近的历史记录。统计数据会定期更新约 15 秒)。

我希望它在一个文件中,因为数据将在另一个程序中处理。

【问题讨论】:

  • 使用内存。如果你只有很少的数据和频繁的更新,你不需要一个文件。
  • 这取决于数据的大小、格式、数据的重要性等。请提供更多信息来说明您要执行的操作。
  • 查看redis
  • 你一定需要一个文件吗?如果是这样,您是否需要每次操作都更新它?并按 FIFO 队列排序?
  • 是否必须存储在文件中?为什么不在内存中维护一个列表?

标签: python


【解决方案1】:

如果您只保留少量样本(并且您不关心历史数据),那么最简单的解决方案是将数据保存在内存中。您可以使用collections.deque 对象,如here 所述,创建一个固定长度的列表,当您添加新项目时,该列表将自动删除旧项目。

对于您希望将数据保留更长时间(或者您只是希望在应用程序重新启动时保留数据,或者您希望能够从多个应用程序访问数据等)的情况,人们经常使用专用的time series database,例如InfluxDBPrometheusGraphite,或任何其他解决方案。

【讨论】:

    【解决方案2】:

    您可能希望将其全部保存在内存中。但是,如果您需要保留一个模拟文件和一个数据结构(比如字典),我在pickle 方面取得了巨大的成功。这很容易,而且速度很快。

    https://pythontips.com/2013/08/02/what-is-pickle-in-python/

    另外一种更企业化的解决方案是将您的统计数据简单地存储在数据库中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-21
      • 1970-01-01
      • 2013-09-10
      • 2014-07-28
      • 2012-05-10
      • 2011-11-26
      • 2018-12-11
      • 1970-01-01
      相关资源
      最近更新 更多