缓存是提高Web应用性能的一种重要技术,它通过在内存或缓存系统中存储计算结果避免对IO开销相对较大的数据库或接口重复访问,从而加速响应时间。Django支持多种缓存后端,包括内存缓存、数据库缓存、文件缓存、分布式缓存等。这篇笔记我们对Django中缓存的使用进行简单介绍。
Django提供了多种内置缓存后端,其中最简单和高效的(非分布式场景下)就是内存缓存,下面配置了内存缓存作为缓存后端。
settings.py
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
}
}
对于分布式场景,我们一般使用Redis作为缓存后端,不过Django默认没有包含Redis的客户端库,我们需要先安装。
pip3 install django-redis
然后在settings.py
项目配置文件中添加如下配置。
settings.py
CACHES = {
'default': {
'BACKEND': 'django_redis.cache.RedisCache',
'LOCATION': 'redis://127.0.0.1:6379/0',
'OPTIONS': {
'CLIENT_CLASS': 'django_redis.client.DefaultClient',
}
}
}
其中Location
字段指定了Redis的地址。
Django中缓存的使用非常简单,只需要在需要缓存的地方调用cache
模块的相应方法即可,下面是一些例子。
from django.http import HttpResponse
from django.core.cache import cache
def index(request):
# 设置缓存
cache.set('animal', 'dog', timeout=60 * 15)
# 获取缓存
value = cache.get('animal')
print(value)
# 删除缓存
cache.delete('animal')
return HttpResponse('OK')
Django默认使用Pickle序列化缓存对象。