配置緩存
CACHES = {
#默認緩存
'default' : {
'BACKEND' : 'djago_redis.cache.RedisCache',
'LOCATION' : [
'redis://1.2.3.4:6379/0',
],
'KEY_PREFIX' : 'fangtx',
'OPTIONS' : {
'CLIENT_CLASS':'django_redis.client.DefaultClient',
'CONNECTION_POOL_KWARGS' : {
'max_connections' : 1000,
},
'PASSWORD' : '1qaz2wsx',
}
},
#頁面緩存
'page' : {
'BACKEND' : 'djago_redis.cache.RedisCache',
'LOCATION' : [
'redis://1.2.3.4:6379/1',
],
'KEY_PREFIX' : 'page',
'OPTIONS' : {
'CLIENT_CLASS':'django_redis.client.DefaultClient',
'CONNECTION_POOL_KWARGS' : {
'max_connections' : 500,
},
'PASSWORD' : '1qaz2wsx',
}},
# 會話緩存
'session' = {
'BACKEND' : 'djago_redis.cache.RedisCache',
'LOCATION' : [
'redis://1.2.3.4:6379/2',
],
'KEY_PREFIX' : 'session',
'TIMEOUT' : 1209600,
'OPTIONS' : {
'CLIENT_CLASS':'django_redis.client.DefaultClient',
'CONNECTION_POOL_KWARGS' : {
'max_connections' : 2000,
},
'PASSWORD' : '1qaz2wsx',
}},
# 接口數(shù)據(jù)緩存
'api' = {
'BACKEND' : 'djago_redis.cache.RedisCache',
'LOCATION' : [
'redis://1.2.3.4:6379/3',
],
'KEY_PREFIX' : 'api',
'OPTIONS' : {
'CLIENT_CLASS':'django_redis.client.DefaultClient',
'CONNECTION_POOL_KWARGS' : {
'max_connections' : 500,
},
'PASSWORD' : '1qaz2wsx',
}
},
}
說明:通過Redis底層提供的額多個數(shù)據(jù)庫用來隔離緩存數(shù)據(jù)有助于緩存數(shù)據(jù)的管理,如果配置了Redis的主從復制(讀寫分離)奕谭,LOCATION列表中可以配置多個Redis連接谤狡,第一個被視為master用來進行讀寫操作吧趣,后面的被視為slave用來進行讀操作萌丈。
全站緩存
MIDDLEWARE = [
'django.middleware.cache.UpdateCacheMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.cache.FetchFromCacheMiddleware',
]
CACHE_MIDDLEWARE_ALIAS = 'default'
CACHE_MIDDLEWARE_SECONDS = 300
CACHE_MIDDLEWARE_KEY_PREFIX = 'django:cache'
視圖層緩存
from django.views.decorators.cache import cache_page
from django.views.decorators.vary import vary_on_cookie
@cache_page(timeout = 60 * 15, cache = 'page')
@vart_on_cookie
def my_view(request):
pass
from django.views.decorators.cache import cache_page
urlpatterns = [
url(r'^foo/([0-9]{1,2})/$',cache_page(60 * 15)(my_view)),
]
其他內(nèi)容
1.模板片段緩存撵渡。
- {% load cache %}
- {% cache %} / {% endcache %}
2.使用底層API訪問緩存。
from django.core.cache import cache
cache.set('my_key', 'hello,world', 30)
cache.get('my_key')
cache.clear()
from django.core.cache import caches
cache1 = cache['page']
cache2 = caceh['page']
cache1 is cache2 # True
cache3 = cache['session']
cache2 is cache3 # False
from django_redis import get_redis_connection
redis_client = get_redis_connection()
redis_client.hgetall()