pip install redis
pip install drf-extensions
pip install django-redis
settings 配置 这是全局配置 一般不设置 只在需要 缓存的接口上配置
# DRF扩展
REST_FRAMEWORK_EXTENSIONS = {
# 缓存时间
'DEFAULT_CACHE_RESPONSE_TIMEOUT': 60 * 60,
# 缓存存储
'DEFAULT_USE_CACHE': 'default',
}
@cache_response(timeout=60*60, cache='default')
timeout 缓存时间;
cache 缓存使用的Django缓存后端(即CACHES配置中的键名称;
如果在使用cache_response装饰器时未指明timeout或者cache参数,则会使用配置文件中的默认配置,可以通过如下方法指明:
使用redis缓存
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/1",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
}
}
}
使用cache_response装饰器
class RoleViewSet(mixins.ListModelMixin, viewsets.GenericViewSet):
"""
list:8 部门列表
"""
queryset = Role.objects.all()
serializer_class = RoleSerializer
@cache_response(timeout=10)
def list(self, request, *args, **kwargs):
queryset = self.filter_queryset(self.get_queryset())
page = self.paginate_queryset(queryset)
if page is not None:
serializer = self.get_serializer(page, many=True)
return self.get_paginated_response(serializer.data)
serializer = self.get_serializer(queryset, many=True)
return Response(serializer.data)