初試Django的緩存系統

初試Django的緩存系統

如今我網頁的邏輯是,響應請求,查找數據庫相關信息,渲染模版生成最終頁面,最後返回。使用緩存後就是將這個頁面保存一段時間,在有響應請求相同頁面的時候,能夠直接返回,不用再作那麼多步。python

Django-redis

直接在settings.py中設置要使用的緩存形式,和添加一些特定的參數來自定義。redis

我選擇的是用redis來作緩存數據庫,而如今就有一個很是好的插件django-redis,能夠直接用。下載庫以後直接設置爲caches的後端就好了,簡單配置以下:數據庫

CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379/1",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
            "PICKLE_VERSION": -1,
            "IGNORE_EXCEPTIONS": True,
        }
    }
}

設置完以後,在對應的視圖函數views.pycache裝飾器去裝飾對應的函數型視圖函數,或者在urls.py中,用直接用cache這個函數去處理對應視圖函數。django

views.py後端

from django.views.decorators.cache import cache_page

@cache_page
def foo(request):
    ***
    return response

urls.py緩存

from django.views.decorators.cache import cache_page

urlpatterns = [
    url(r'^$', cache_page(60 * 15)(views.HomeView.as_view()), name='home'),
]

還能夠在模版文件中,緩存某部分頁面(我的感受主要去緩存那些要與數據庫交互的部分就行了)函數

{% load cache %}

{% cache 60 some_part}
*********
{% endcache %}

關於一些對cache的直接操做

其實cache的儲存方式能夠理解成相似於字典,都是鍵值對應的。測試

在導入cache以後,直接按字典型操做,就能夠取到緩存中的值了。url

>>> from django.core.cache import cache
>>> cache.set("foo", "value", timeout=25)
>>> cache.ttl("foo")
25
>>> cache.ttl("not-existent")
0

以上例子來自django-redis的文檔。插件

下載安裝redis

在官方文檔下載完壓縮包後,解壓,而後就make test,經過以後就能夠make --prefix=/usr/redismake install

完成安裝後,去到目錄下,測試server是否能成功啓動。

配置方面,我暫時就只設置了守護進程,日誌等級,存放位置,儲存上限,滿上限後的刪除規則。

相關文章
相關標籤/搜索