Memcached(一個高性能的分佈式的內存對象緩存系統)數據庫
可用來分擔數據庫的壓力。經過在內存裏維護一個統一的巨大的hash表,memcached能存儲各類各樣的數據,包括圖像、視頻、文件、以及數據庫檢索的結果等。簡單的說就是將數據調用到內存中,而後從內存中讀取,從而大大提升讀取速度。django
適用:存儲驗證碼(圖形驗證碼、短信驗證碼)、登陸session等全部不是相當重要的數據。flask
安全性:
瀏覽器
django中使用需在 settings.py 中配置好緩存;緩存
添加 KEY_FUNCTION 參數:django在存儲數據到memcached中的時候,可自定義前綴。安全
1 # 配置memcached緩存; 2 CACHES = { 3 'default': { 4 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 5 # 可指定多個鏈接:['172.19.26.240:11211','172.19.26.242:11211',] 6 'LOCATION': '127.0.0.1:11211', 7 'KEY_FUNCTION': lambda key,prefix_key,version:"django:%s"%key 8 } 9 }
1 # views.py 2 from django.core.cache import cache 3 from django.http import HttpResponse 4 def index(request): 5 cache.set('name','jack',60) 6 name = cache.get('name') 7 print('name') 8 return HttpResponse("index")
在終端使用 Telnet 127.0.0.1 11211 訪問數據:服務器
django:name :爲 KEY_FUNCTION 所定義的參數。cookie
cookiesession
在網站中,http請求是無狀態的。第一次登陸後服務器返回一些數據(cookie)給瀏覽器,而後瀏覽器保存在本地,當該用戶發送第二次請求的時候,就會自動的把上次請求存儲的cookie數據自動的攜帶給服務器,服務器經過瀏覽器攜帶的數據就能判斷當前是哪一個用戶。cookie存儲的數據量有限,不一樣的瀏覽器有不一樣的存儲大小,但通常不超過4KB。所以使用cookie只能存儲一些小量的數據。框架
session
與cookie的做用相似,都是爲了存儲用戶相關的信息。(session的出現,是爲了解決cookie存儲數據不安全的問題的。)
操做
經過 response.set_cookie 來設置cookie;使用 request.session 操做session:
1 from django.http import HttpResponse 2 3 # 設置cookie的名字,內容,存在時長; 4 def index(request): 5 response = HttpResponse('index') 6 response.set_cookie('username','jack',max_age=120) 7 return response 8 9 # session數據 10 def session_view(request): 11 request.session['username'] = 'jack' 12 username = request.session.get('username') 13 return HttpResponse('%s'%username)
修改session的存儲機制:
默認狀況下,session數據是存儲到數據庫中的。固然也能夠將session數據存儲到其餘地方。能夠經過設置 SESSION_ENGINE 來更改session的存儲位置,這個能夠配置爲如下幾種方案:
使用 django.contrib.sessions.backends.cached_db 的存儲機制:
1 # settings.py 2 # 配置memcached緩存; 3 CACHES = { 4 'default': { 5 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 6 'LOCATION': '127.0.0.1:11211', 7 } 8 } 9 # 設置session存儲機制; 10 SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db'
終端的值與數據庫的值一致: