2015-06-18 95 views
0

我需要緩存一箇中等大小的查詢集(約500行)。我看了一些解決方案,django-cache-machine是最有前途的。由於查詢集幾乎是靜態的(這是一張預先填充好的城市表,並且只能由我和任何地方更新,幾乎從不更新),我只需要在每次請求過濾時都提供相同的查詢集。Django - 查詢集緩存請求獨立?

在我的搜索中,一個細節實際上並不清楚:緩存是一種單例對象,它可用於每個請求?我的意思是,如果兩個不同的用戶訪問同一頁面,並且查詢集針對第一個用戶進行評估,那麼第二個用戶是否獲取緩存的查詢集?

回答

0

我搞不​​清楚,你到底面臨着什麼問題。你所說的是經典的緩存用例。 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 

儘管爲了簡單起見,我已經寫了這個功能,理想情況下,這應該是有關模型的管理方法。

+0

謝謝。我知道這聽起來像一個愚蠢的問題,但我更願意在開始做某件事之前清除所有的疑惑,甚至是最愚蠢的。 – mp85

+0

沒有問題不愚蠢。只是我不確定你在問什麼。 – hspandher