Django缓存详细配置(简单易懂 - 强烈推荐)

缓存

默认缓存

# 默认缓存 default
CACHES = {
     
     'default': {
     
         'BACKEND': 'django_redis.cache.RedisCache',
         'LOCATION': [
             'redis://1.2.3.4:6379/0',
         ],
         'KEY_PREFIX': 'teamproject',
         'OPTIONS': {
     
             'CLIENT_CLASS': 'django_redis.client.DefaultClient',
             'CONNECTION_POOL_KWARGS': {
     
                 'max_connections': 1000,
             },
             'PASSWORD': '1qaz2wsx',
         }
	},
# 页面缓存 - page
	'page': {
     
         'BACKEND': 'django_redis.cache.RedisCache',
         'LOCATION': [
             'redis://1.2.3.4:6379/1',
         ],
         'KEY_PREFIX': 'teamproject:page',
         'OPTIONS': {
     
             'CLIENT_CLASS': 'django_redis.client.DefaultClient',
             'CONNECTION_POOL_KWARGS': {
     
                 'max_connections': 500,
             },
             'PASSWORD': '1qaz2wsx',
         }
	},
# 会话缓存 session
	'session': {
     
         'BACKEND': 'django_redis.cache.RedisCache',
         'LOCATION': [
     		 'redis://1.2.3.4:6379/2',
     	 ],
    	'KEY_PREFIX': 'teamproject:session',
    	'TIMEOUT': 1209600,
    	'OPTIONS': {
     
	        'CLIENT_CLASS': 'django_redis.client.DefaultClient',
	        'CONNECTION_POOL_KWARGS': {
     
	            'max_connections': 2000,
	        },
	        'PASSWORD': '1qaz2wsx',
        }
	},
# 接口数据缓存 api
	'api': {
     
		'BACKEND': 'django_redis.cache.RedisCache',
		'LOCATION': [
		    'redis://1.2.3.4:6379/3',
		],
		'KEY_PREFIX': 'teamproject:api',
		'OPTIONS': {
     
		    'CLIENT_CLASS': 'django_redis.client.DefaultClient',
		    'CONNECTION_POOL_KWARGS': {
     
		        'max_connections': 500,
		    },
		    'PASSWORD': '1qaz2wsx',
		}
	},
}

说明: 通过Redis底层提供的多个数据库来隔离缓存数据有助于缓存数据的管 。如果配置 Redis的主从复制(读写分离),LOCATION 表中可以配置多个Redis连接,第 个被视为 master 来进 写操作,后 的被视为slave 来进 读操作。

全站缓存

MIDDLEWARE_CLASSES = [
     'django.middleware.cache.UpdateCacheMiddleware',
     ...
     'django.middleware.common.CommonMiddleware',
     ...
     'django.middleware.cache.FetchFromCacheMiddleware',
]
CACHE_MIDDLEWARE_ALIAS = 'default'
CACHE_MIDDLEWARE_SECONDS = 300
CACHE_MIDDLEWARE_KEY_PREFIX = 'djang:cache'

视图层缓存

通过views视图函数设置缓存

# views
from django.views.decorators.cache import cache_page
from django.views.decorators.vary import vary_on_cookie

@cache_page(timeout=60 * 15, cache='page') # cache设置缓存库
@vary_on_cookie
def my_view(request):
	pass

通过 url 路由缓存

# url.py 
from django.views.decorators.cache import cache_page

urlpatterns = [
	url(r'^foo/([0-9]{1,2})/$', cache_page(60 * 15)(my_view)),
]

你可能感兴趣的:(python,缓存,django,redis)