Python Memcached: кеширование объектов - PullRequest
1 голос
/ 11 января 2012

Я использую 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 Ответ

2 голосов
/ 11 января 2012

С этим проблем нет.Конечно, будут некоторые издержки на объект выбора, а не на необработанные данные, но вы этого не заметите.

И помните, что при доступе к ForeignKey, ManyToManyField и OneToOneField вы все равно попадете в БД.Но вы можете кэшировать эти отношения вручную.

...