django-restful:缓存机制 drf-extensions 学习记录

配置第三方包 的缓存功能 github地址:https://github.com/chibisov/drf-extensions

文档:http://chibisov.github.io/drf-extensions/docs/#cacheresponsemixin

安装

  1. pip install drf-extensions

django 3.1使用pip命令安装后会报错,故使用下面的方法进行安装

  1. pip3 install https://github.com/chibisov/drf-extensions/archive/master.zip

1.内存缓存

配置 非常简单

settings 可不用写 默认有

  1. REST_FRAMEWORK_EXTENSIONS = {
  2. 'DEFAULT_OBJECT_CACHE_KEY_FUNC':
  3. 'rest_framework_extensions.utils.default_object_cache_key_func',
  4. 'DEFAULT_LIST_CACHE_KEY_FUNC':
  5. 'rest_framework_extensions.utils.default_list_cache_key_func',
  6. }

然后 只需要 在你需要进行缓存的地方进行 配置

例子 CacheResponseMixin 配置上这个 就行了 注意一定要在最先配置这个 顺序很重要

  1. from myapps.serializers import UserSerializer
  2. from rest_framework_extensions.cache.mixins import CacheResponseMixin
  3. class UserViewSet(CacheResponseMixin, viewsets.ModelViewSet):
  4. serializer_class = UserSerializer

然后 就是配置过期时间 毕竟 数据也会有更新的 所以加上一个 过期时间

settings

  1. REST_FRAMEWORK_EXTENSIONS = {
  2. 'DEFAULT_CACHE_RESPONSE_TIMEOUT': 60 * 15 #秒为单位 自己 随意更改
  3. }

2.redis 缓存

这个可以更直观的看着 dir-extensions做了什么
django 连接redis 需要一些 第三方插件 github地址:https://github.com/niwinz/django-redis

安装

  1. pip install django-redis

配置

settings

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

就这样 就可以了 至于 redis 的安装 我这里就不写了