我使用的是 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)
我想知道缓存一个对象并使用缓存的对象进行这样的实例方法调用有多有效?
最佳答案
没有任何问题。当然,pickle 对象(而不是原始数据)会产生一些开销,但你不会注意到它。
请记住,当您访问ForeignKey、ManyToManyField 和OneToOneField 时,无论如何都会导致DB 命中。但您可以手动缓存这些关系。
关于Python 内存缓存 : caching objects,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8818223/