因为我们正在使用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 )将被加载到内存中。所以我们不需要在这种情况下使用缓存,对吗?或者我错了?
如果我错了,请纠正我。
感谢。
答案 0 :(得分:3)
你已经删除了太多的信息,但它看起来像“数组”(实际上是一个字典)总是一样的 - 在首次导入模块时会创建一个实例,并且会被使用每个Items
对象。所以通过缓存它绝对没有任何好处 - 实际上你会因为这样做而失败,因为你将引入一个不必要的往返来从缓存中获取数据。