【发布时间】:2012-01-11 11:10:04
【问题描述】:
我正在使用 Python 2.6.5 和 Django 1.3
让我说我有这样的模型:
class Company(models.Model):
name = models.CharField(...)
type = models.SmallIntegerField(...)
....
def check_condition(self, someParam):
do someThing...
return someThing
这是一个使用频率很高的模型,所以我将基本数据保存在字典中并缓存这个字典
aComp = Company.objects.get(pk=somevalue)
compDict = {'name':aComp.name, 'type': aComp.type...}
cache.set('companyInfo', compDict)
一切都很好,但在某些情况下,我需要调用 Company 的方法,但由于我缓存了 company info ,我想知道缓存对象是否好......就像
compDict = {'name':aComp.name, 'type': aComp.type, 'obj':aComp}
并使用它
myComp = cache.get('companyInfo')
compInst = myComp['obj']
compInst.check_condition(aParam)
我想知道缓存一个对象并使用缓存的对象进行这样的实例方法调用有多有效?
【问题讨论】:
-
如果你正在缓存整个对象,那么字典根本没有意义:只需将
aComp传递给cache.set。 -
@DanielRoseman - aComp 'd Django qs 对象(尚未命中数据库,即尚未评估查询集)。我尝试设置 obj,使用 cache.get('obj') 导致相同数量的查询 - 因为它得到了评估模板,即 obj.attr
-
我正在寻找一种方法来缓存昂贵的查询 - 以最小的开发开销(庞大的代码库)。
标签: python django caching memcached python-memcached