TOP

DRF 缓存解决方案 drf-extensions / redis

drf-extensions

概述

drf-extensions组件内部提供了 DRF  的本地内存方式的缓存方式

本地内存方式缓存在项目重启后则会消失

官方点击 这里  

安装

pip3 install drf-extensions

or from github

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

导入

from rest_framework_extensions.cache.mixins import CacheResponseMixin

使用

在要被使用的 DRF 视图类中继承此类( 最好写在第一个 )

class GoodsListViewset(CacheResponseMixin, mixins.ListModelMixin.....):
    pass

配置

此处配置为5s失效, 其他配合点击这里 查看 

REST_FRAMEWORK_EXTENSIONS = {
    'DEFAULT_CACHE_RESPONSE_TIMEOUT': 5
}

效果

在无缓存的时候请求是 1s 左右

 

有缓存的时候为 43ms, 超时5s后则变回1s, 5s内刷新都是40ms左右

 

搭载 Redis

安装

使用第三方组件 django-redis

pip install django-redis -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

配置

配置相关的连接参数在 settings.py 中

CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
            "PASSWORD": "yangtuo",
        }
    }
}

使用

基础的使用点击  这里

如果是搭配  drf-extensions 组件, 则和上面的方法是一样的

 drf-extensions  的缓存方法是基于本地的, 如果在配置中配置了 基于 redis 

则缓存方案自动切换为 redis 方案即可. 

 

posted @ 2019-04-26 17:38  羊驼之歌  阅读(754)  评论(0编辑  收藏  举报