配置redis作爲Django緩存和session存儲後端

django.contrib.auth.login()記錄用戶的登錄狀態:login(request, user)使用Django的session框架來將用戶的ID保存在session

Django項目默認啓用Session

打開settings.py文件,在項MIDDLEWARE_CLASSES中啓用Session中間件

1. 首先中間件是什麼

Django中的中間件是一個輕量級、底層的插件系統,可以介入Django的請求和響應處理過程,修改Django的輸入或輸出。中間件的設計爲開發者提供了一種無侵入式的開發方式,增強了Django框架的健壯性,其它的MVC框架也有這個功能,名稱爲AOP。

這裏的session中間件就是給每個請求request(由django產生的)對象動態添加一個session屬性,如果不開啓,將不會給request對象添加session屬性,這就是爲什麼WSGIRequest類沒session屬性的原因,因爲是動態添加的

by the way,因爲開啓了django.contrib.auth.middleware.AuthenticationMiddleware 用戶認證的中間件,所以它們在每個請求上提供一個request.user屬性,且這個user屬性作爲模板變量會自動傳入模板中,可以直接在模板中使用user對象

2. 說完session中間件,再來說說session的存儲方式

settings.py文件,設置SESSION_ENGINE項指定Session數據存儲的方式,可以存儲在數據庫、緩存、Redis等。【默認存儲在數據庫中】

這裏選擇存儲在緩存中,因爲session經常存取,只要網站被訪問,就會讀取session,且數據量小,這裏可以選擇用緩存來存儲

django緩存的存儲方式:一般來說緩存是存儲在內存中的,但是基於內存的緩存有一個缺點:因爲緩存數據是存儲在內存中的,所以如果你的服務器宕機數據就會丟失,所以這裏選擇使用redis來存儲緩存,redis的所有數據是放在內存中的,且可基於內存亦可持久化,所以這裏我們選擇redis作爲django的緩存。

這裏就需要在setting中配置

#django的緩存配置
CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379/9",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    }
}

而session作爲緩存存儲,所以session存儲在redis中

# 使用Redis緩存session
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
SESSION_CACHE_ALIAS = "default"

by the way :使用redis緩存準測:

  1. 經常存取,且不會改變的數據可以用緩存來存儲,比如首頁數據,數據量雖然大,但它不會經常改變

  2. 經常使用(這裏的經常使用的意思是經常作dml操作),但數據量小,比如說購物車數量的改變,就可以使用緩存

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章