Django queryset缓存请求独立?

2024-05-29 07:24:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要缓存一个中等大小的queryset(大约500行)。我看过一些解决方案,django缓存机是最有前途的。你知道吗

由于查询集是非常静态的(它是一个城市表,预先填充,只由我更新,无论如何,几乎从不更新),我只需要在每次请求过滤时提供相同的查询集。你知道吗

在我的搜索中,有一个细节我真的不太清楚:缓存是一种单例对象吗,每个请求都可以使用它?我的意思是,如果两个不同的用户访问同一个页面,并且对第一个用户的queryset进行求值,那么第二个用户会得到缓存的queryset吗?你知道吗


Tags: 对象django用户静态页面解决方案细节单例
1条回答
网友
1楼 · 发布于 2024-05-29 07:24:41

我不知道,你到底面临什么问题。您所说的是缓存的经典用例。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

尽管为简单起见,我已经将其编写为函数,但理想情况下,这应该是相关模型的管理器方法。你知道吗

相关问题 更多 >

    热门问题