Python Memcached:缓存对象

时间:2012-01-11 11:10:04

标签: python django caching memcached python-memcached

我正在使用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)

我想知道缓存一个对象并使用缓存对象进行实例方法调用是多么有效?

1 个答案:

答案 0 :(得分:2)

它没有任何问题。当然,酸洗对象会有一些开销,而不是原始数据,但你不会注意到它。

请记住,当您访问ForeignKey,ManyToManyField和OneToOneField时,无论如何都会使DB命中。但您可以手动缓存这些关系。