python3+django使用memcached
阿新 • • 發佈:2019-01-08
django支援很多快取,目前我們的小專案只需要key-value式儲存,因此使用高效能的memcached作為快取,如果需要資料的持久化,對資料格式也有一定的要求,可以使用redis。
1. 安裝
memcached分為兩部分:在系統上安裝memcached、安裝python3-memcached。
安裝memcached需要先安裝:libevent=2.1.18
wget https://github.com/libevent/libevent/releases/download/release-2.1.8-stable/libevent-2.1.8-stable.tar.gz
tar -zxvf libevent-2.1.8-stable.tar.gz
cd libevent-2.1.8-stable
make && make install
ls -al /usr/local/lib |grep libevent
如果顯示許多libevent_檔案則表示安裝成功
接下來是 memcached-1.4.35原始碼安裝
wget http://www.memcached.org/files/memcached-1.4.35.tar.gz
tar xf memcached-1.4.35.tar.gz
cd memcached-1.4.35
./configure --with-libevent=/usr/local
make && make install
memcached啟動
memcached -d -m 32 -p 11211 -u root -l 127.0.0.1 -p 11211 -c 2048
連線memcached檢視狀態
telnet 127.0.0.1 11211
stats
會輸出memcache的一些連線資訊,包括PID,如果需要退出,則執行quit命令即可,除了stats還有很多其他命令可使用
安裝python3-memcached
pip3 install python3-memcached
2. django配置
首先在django的settings.py中的MIDDLEWARE的開頭和結尾分別新增以下行,請注意,順序和位置是要嚴格遵守的。
MIDDLEWARE = [
'django.middleware.cache.UpdateCacheMiddleware',
....
'django.middleware.cache.FetchFromCacheMiddleware',
]
接下來配置cache,新增以下行
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': ['127.0.0.1:11211'],
'TIMEOUT': 60*60,
}
}
3. 使用
from django.views.decorators.csrf import csrf_exempt
from django.views.decorators.http import require_POST
from django.core.cache import cache
@csrf_exempt
@require_POST
def start(request):
# 寫入快取,timeout表示資料存活時長
cache.set('key', 'v', timeout=20)
# 從快取中讀取資料
response_cache = cache.get('key')