准备
安装Redis
参考 。
在python中使用Redis
参考 。
安装依赖包
在 Django 中接入 Redis 需要安装如下依赖包:
pip install django-redis
使用
配置
在 settings.py 中加入配置:
CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCache", "LOCATION": "redis://192.168.154.129:6379", "OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", "CONNECTION_POOL_KWARGS": { "max_connections": 100}, "PASSWORD": "1234", } }}
获取Redis连接
在视图中就可以这样获取 Redis 连接:
from django.shortcuts import HttpResponsefrom django_redis import get_redis_connectiondef test(request): # 可通过参数选择连接 对应 settings.py 中 CACHES 节中的键名 conn = get_redis_connection('default') # 之后就可以通过拿到的连接进行操作了 return HttpResponse('')
配置全站缓存
使用中间件实现,会经过一系列的认证等操作,如果内容在缓存中存在,则使用 FetchFromCacheMiddleware 获取内容并返回给用户,当返回给用户之前,判断缓存中是否已经存在,如果不存在则 UpdateCacheMiddleware 会将内容保存至缓存,从而实现全站缓存。
MIDDLEWARE = [ 'django.middleware.cache.UpdateCacheMiddleware', 'django.middleware.cache.FetchFromCacheMiddleware',]CACHE_MIDDLEWARE_ALIAS = ""CACHE_MIDDLEWARE_SECONDS = "" # 超时时间CACHE_MIDDLEWARE_KEY_PREFIX = ""
单独视图缓存
-
方式一:装饰器
from django.views.decorators.cache import cache_page@cache_page(60 * 15)def my_view(request): pass
-
方式二:路由中配置
from django.views.decorators.cache import cache_pageurlpatterns = [ url(r'^foo/([0-9]{1,2})/$', cache_page(60 * 15)(my_view)),]
-
方式三:模板中使用
{ # a. 引入TemplateTag #}{% load cache %}{ # b. 使用缓存 #}{% cache 5000 缓存key %} 缓存内容{ % endcache %}