Python 内存缓存 : caching objects

标签 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 的方法,但由于我缓存 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/

相关文章:

java - CouchbaseClient 如何获取存储桶中所有 DesignDocuments 的列表

python - 客户端和服务器端使用相同的渲染代码

python - 登录 `rest-auth`后,如何返回更多信息?

python - 如何在请求中定义 HTTP 协议(protocol)版本?

python - 如何对 Django 管理内联表单进行单元测试

ios - 在 iOS 上自动清除(清空/清除)缓存文件夹

python - Django 测试模型根据它们的位置加载?

python - 如何覆盖 models.py 中的 __str__ ?

django - 如何修改Browsable API表单

ruby-on-rails - 在 Rails 中缓存 yaml 文件