【问题标题】:Do we need cache for an array?我们需要为数组缓存吗?
【发布时间】:2009-11-05 12:47:06
【问题描述】:

因为我们正在使用 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 ) 将在尝试获取一项时加载到内存中。所以我们不需要在这种情况下使用缓存,对吧?还是我错了?

如果我错了,请纠正我。

谢谢。

【问题讨论】:

  • 这与您几分钟前问的问题基本相同吗?
  • 是的,差不多。但不同的问题。我想提一个问题,但似乎不太合适。

标签: django caching


【解决方案1】:

您已经删减了太多信息,但看起来“数组”(实际上是字典)总是相同的 - 首次导入模块时会创建一个实例,并将被使用每个Items 对象。因此,缓存它绝对不会获得任何好处 - 事实上,这样做你会失去,因为你会引入不必要的往返来从缓存中获取数据。

【讨论】:

    猜你喜欢
    • 2012-08-25
    • 1970-01-01
    • 2016-06-25
    • 2011-03-23
    • 1970-01-01
    • 2016-12-13
    • 2021-11-30
    • 2015-10-24
    • 2015-12-15
    相关资源
    最近更新 更多