1. 程式人生 > >python3+django使用memcached

python3+django使用memcached

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')