【问题标题】:Django - queryset caching request-independent?Django - 查询集缓存请求独立?
【发布时间】:2015-06-18 18:54:04
【问题描述】:

我需要缓存一个中等大小的查询集(大约 500 行)。我看了一些解决方案,django-cache-machine 是最有前途的。

由于查询集几乎是静态的(它是一个预先填充的城市表,并且只能由我更新,而且几乎从不更新),我只需要在每次过滤请求时提供相同的查询集。

在我的搜索中,我真的不清楚一个细节:缓存是一种可用于每个请求的单例对象吗?我的意思是,如果两个不同的用户访问同一个页面,并且为第一个用户评估查询集,那么第二个用户是否获得缓存的查询集?

【问题讨论】:

    标签: python django django-queryset django-cache


    【解决方案1】:

    我不知道您到底面临什么问题。您所说的是缓存的经典用例。 Memcache 和 redis 是两个最流行的选项。您只需要编写一些方法或函数,首先尝试从缓存中加载结果,如果不存在,它会查询数据库。例如:-

    from django.core.cache import cache
    
    def cache_user(userid):
           key = "user_{0}".format(userid)
           value = cache.get(key)
           if value is None:
                 # fetch value from db
                 cache.set(value)
    
           return value
    

    虽然为了简单起见,我把它写成函数,理想情况下这应该是相关模型的管理器方法。

    【讨论】:

    • 谢谢。我知道这听起来像是一个愚蠢的问题,但我更愿意在开始做某事之前清除所有疑问,即使是最愚蠢的。
    • 不,这个问题并不愚蠢。只是我不确定你在问什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-29
    • 2011-06-16
    • 2014-01-31
    相关资源
    最近更新 更多