自定义链接池
这种方式跟普通py文件操做redis同样,代码以下:python
views.pyredis
import redis from django.shortcuts import render,HttpResponse from utils.redis_pool import POOL def index(request): conn = redis.Redis(connection_pool=POOL) conn.hset('kkk','age',18) return HttpResponse('设置成功') def order(request): conn = redis.Redis(connection_pool=POOL) conn.hget('kkk','age') return HttpResponse('获取成功')
经过第三方组件操做redis
安装
pip3 install django-redis
配置
settings.pydjango
# redis配置 CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCache", "LOCATION": "redis://127.0.0.1:6379", "OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", "CONNECTION_POOL_KWARGS": {"max_connections": 100} # "PASSWORD": "密码", } } }
使用
views.py缓存
import redis from django.shortcuts import render,HttpResponse from django_redis import get_redis_connection def index(request): conn = get_redis_connection("default") return HttpResponse('设置成功') def order(request): conn = get_redis_connection("default") return HttpResponse('获取成功')
全站缓存
使用中间件,通过一系列的认证等操做,若是内容在缓存中存在,则使用FetchFromCacheMiddleware获取内容并返回给用户,
当返回给用户以前,判断缓存中是否已经存在,若是不存在则UpdateCacheMiddleware会将缓存保存至缓存,从而实现全站缓存post
MIDDLEWARE = [ 'django.middleware.cache.UpdateCacheMiddleware', # 其余中间件... 'django.middleware.cache.FetchFromCacheMiddleware', ]
一个放在最上面,一个放在最下面url
views.py中间件
from django.shortcuts import render,HttpResponse import time def index(request): ctime = str(time.time()) return HttpResponse(ctime) def order(request): ctime = str(time.time()) return HttpResponse(ctime)
配置了全站缓存,在不一样的时间(必定范围内),上面两个视图返回的时间是同样的,都是缓存时的时间blog
单独视图缓存
方式一:经过装饰器
from django.views.decorators.cache import cache_page @cache_page(60 * 15) def my_view(request): ...
方式二:经过url
from django.views.decorators.cache import cache_page urlpatterns = [ url(r'^foo/([0-9]{1,2})/$', cache_page(60 * 15)(my_view)), ]
局部页面缓存
1. 引入TemplateTagip
{% load cache %}
2. 使用缓存get
{% cache 5000 缓存的key %} 缓存内容 {% endcache %}