我们需要缓存数组吗?

时间:2009-11-05 12:47:07

标签: django caching

因为我们正在使用django开发基于Web的项目。我们缓存db操作以获得更好的性能。但我想知道是否需要缓存数组。

像这样的代码示例:

ABigArray = {
  "1" : {
     "name" : "xx",
     "gender" "xxx",
     ...
   },
  "2" : {
     ...
   },
   ...
  }
 class Items:
     def __init__(self):
         self.data = ABigArray

     def get_item_by_id(self, id):
         item = cache.get("item" + str(id)) # get the cached item if possible
         if item:
             return item
         else:
              item = self.data.get(str(id))
              cache.set("item" + str(id), item)
              return item

所以我想知道我们是否真的需要这样的缓存,因为当尝试获取一个项目时,IMO数组( ABigArray )将被加载到内存中。所以我们不需要在这种情况下使用缓存,对吗?或者我错了?

如果我错了,请纠正我。

感谢。

1 个答案:

答案 0 :(得分:3)

你已经删除了太多的信息,但它看起来像“数组”(实际上是一个字典)总是一样的 - 在首次导入模块时会创建一个实例,并且会被使用每个Items对象。所以通过缓存它绝对没有任何好处 - 实际上你会因为这样做而失败,因为你将引入一个不必要的往返来从缓存中获取数据。