我使用的是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
的方法,但由于我缓存公司信息,我想知道缓存对象是否好。。。像
compDict = {'name':aComp.name, 'type': aComp.type, 'obj':aComp}
并使用
myComp = cache.get('companyInfo')
compInst = myComp['obj']
compInst.check_condition(aParam)
我想知道缓存一个对象并将缓存的对象用于类似的方法调用的效果如何?
它没有问题。当然,酸洗对象会有一些开销,而不是原始数据,但你不会注意到。
请记住,当您访问ForeignKey、ManyToManyField和OneToOneField时,无论如何都会使DB命中。但是您可以手动缓存这些关系。