Django项目配置DjangoRESTFramework缓存

这篇文章我们将学习如何在Django项目中配置Django REST Framework缓存。

安装配置

我们需要安装额外的插件 DRF-extensions: https://github.com/chibisov/drf-extensions

安装:

进入到项目的虚拟环境安装插件包

1
pip install drf-extensions
配置:

我们查看官方文档:https://chibisov.github.io/drf-extensions/docs/#cacheresponsemixin

image-20180626174518326

我们看到官方文档描述为只有在使用retrievelist的这两个查看方法的时候才能使用缓存。具体使用是在对应的类中引用CacheResponseMixin

1
2
3
4
5
6
# 使用例子
from myapps.serializers import UserSerializer
from rest_framework_extensions.cache.mixins import CacheResponseMixin

class UserViewSet(CacheResponseMixin, viewsets.ModelViewSet):
serializer_class = UserSerializer
配置过期时间

完成上述配置之后就能缓存成功,但是如果不设置缓存失效,会一直访问缓存数据,当有新数据加载到数据库的时候就会出现查找不到,这时我们需要设置缓存过期时间。

查看官方文档设置过期时间

image-20180626180550086

在settings.py配置文件配置如下:

1
2
3
4
REST_FRAMEWORK_EXTENSIONS = {
'DEFAULT_CACHE_RESPONSE_TIMEOUT': 60 * 15
}
# 单位是秒 可以根据实际需求调整

完成之后我们就完成了所有的配置。

配置Redis缓存

有的同学就有疑问了,这个缓存是保存在哪的呢?

默认情况是保存在本机内存中(local memory),不过我们现在配置Redis,可以更直观查看数据在内存中的存储方式。

安装必要的库django-redis:https://github.com/niwinz/django-redis

查看中文文档进行安装配置:https://django-redis-chs.readthedocs.io/zh_CN/latest/

安装:
1
pip install django-redis
配置

在settings.py配置文件配置如下:

1
2
3
4
5
6
7
8
9
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
}
}
}

这里的大致原理是对于不同的请求,会在redis中生成不同的主键进行保存。即不同的参数,不同的页面都有不同的key以确保数据的准确性。

知识就是财富
如果您觉得文章对您有帮助, 欢迎请我喝杯水!