2013-10-09 58 views
0

假设我有很多(数百) python词典。腌制的文件大小约为2Mb。我想使用这些字典中的数据绘制图表,所以我必须加载它们。什么是最有效率的(以第一速度,在第二个内存中)来存储我的数据?可能我应该使用另一个缓存工具?这我现在如何解决这个任务:我应该如何使用python和redis存储简单对象?

  1. Pickle every my dictionary。只是腌(字典)
  2. 加载酸洗的字符串到redis。 redis.set(key,dict)
  3. 当用户需要图表时,我正在创建数组并使用来自redis的unpickled数据填充它。就这样:

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

现在我有两个问题:内存,使我的数组是非常大的,但它不是重要的,容易解决。主要问题 - 速度。取出0.3秒以上的物体很多。我甚至有1秒以上的瓶颈时间。从redis获得这个字符串相当昂贵(超过0.01秒)。当我有很多对象时,我的用户必须等待很多秒。

回答

1

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

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

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

相关问题