0

假设我有很多(数百个)蟒蛇词典。腌制文件大小约为 2Mb。我想使用这个词典中的数据绘制图表,所以我必须将它们全部加载。存储数据的最有效(第一速度,第二内存)方式是什么?也许我应该使用另一个缓存工具?这就是我现在解决此任务的方式:

  1. 腌制我的每本字典。只是泡菜(字典)
  2. 将腌制的字符串加载到redis。redis.set(键,字典)
  3. 当用户需要图表时,我正在创建数组并用来自 redis 的未腌制数据填充它。就像这样:

    array = []
    
    for i in range(iteration_count):
    
        array.append(unpickle(redis.get(key)))
    

现在我有两个问题:内存,导致我的数组非常大,但它并不重要且易于解决。主要问题 - 速度。许多对象的解酸时间超过 0.3 秒。我什至有超过 1 秒的解酸时间的瓶颈。从 redis 获取这个字符串相当昂贵(超过 0.01 秒)。当我有很多对象时,我的用户必须等待很多秒。

4

1 回答 1

1

如果可以假设您是在 Web 应用程序的上下文中询问并且您正在浏览器中显示图表,那么我肯定会建议将您的字典作为 JSON 存储在 redis 中。

同样,您没有提供有关您的应用程序的太多详细信息,但我之前已经实现了对非常大的数据集的图表(在几分钟的时间内每秒有 100,000 个传感器数据点)。为了在渲染数据集时提高性能,我将每种类型的数据存储到它们自己的字典或“系列”中。此策略允许您根据需要仅呈现部分数据。

也许如果您分享更多关于您的特定应用程序的信息,我们可能会提供更多帮助。

于 2013-10-09T05:26:48.127 回答