Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django-queryset缓存请求独立?_Python_Django_Django Queryset_Django Cache - Fatal编程技术网

Python Django-queryset缓存请求独立?

Python Django-queryset缓存请求独立?,python,django,django-queryset,django-cache,Python,Django,Django Queryset,Django Cache,我需要缓存一个中等大小的queryset(大约500行)。我看过一些解决方案,django缓存机是最有前途的 由于queryset几乎是静态的(它是一个城市表,预先填充,只由我更新,无论如何,几乎从不更新),我只需要在每个过滤请求中提供相同的queryset 在我的搜索中,有一个细节我真的不清楚:缓存是一种单例对象吗?它对每个请求都可用吗?我的意思是,如果两个不同的用户访问同一个页面,并且对第一个用户的查询集进行了评估,那么第二个用户是否得到了缓存的查询集?我不知道,您到底面临着什么问题。您所说

我需要缓存一个中等大小的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

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

谢谢。我知道这听起来像一个愚蠢的问题,但我更喜欢在开始做某事之前澄清所有的疑问,即使是最愚蠢的。不,这个问题并不愚蠢。只是我不确定你到底在问什么。