Python Django-queryset缓存请求独立?
我需要缓存一个中等大小的queryset(大约500行)。我看过一些解决方案,django缓存机是最有前途的 由于queryset几乎是静态的(它是一个城市表,预先填充,只由我更新,无论如何,几乎从不更新),我只需要在每个过滤请求中提供相同的querysetPython Django-queryset缓存请求独立?,python,django,django-queryset,django-cache,Python,Django,Django Queryset,Django Cache,我需要缓存一个中等大小的queryset(大约500行)。我看过一些解决方案,django缓存机是最有前途的 由于queryset几乎是静态的(它是一个城市表,预先填充,只由我更新,无论如何,几乎从不更新),我只需要在每个过滤请求中提供相同的queryset 在我的搜索中,有一个细节我真的不清楚:缓存是一种单例对象吗?它对每个请求都可用吗?我的意思是,如果两个不同的用户访问同一个页面,并且对第一个用户的查询集进行了评估,那么第二个用户是否得到了缓存的查询集?我不知道,您到底面临着什么问题。您所说
在我的搜索中,有一个细节我真的不清楚:缓存是一种单例对象吗?它对每个请求都可用吗?我的意思是,如果两个不同的用户访问同一个页面,并且对第一个用户的查询集进行了评估,那么第二个用户是否得到了缓存的查询集?我不知道,您到底面临着什么问题。您所说的是缓存的经典用例。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
虽然为了简单起见,我将其作为函数编写,但理想情况下,这应该是相关模型的管理器方法。谢谢。我知道这听起来像一个愚蠢的问题,但我更喜欢在开始做某事之前澄清所有的疑问,即使是最愚蠢的。不,这个问题并不愚蠢。只是我不确定你到底在问什么。