安装 Redis
在配置缓存前要先安装好 Redis ,Windows 版本下载地址: https://github.com/MicrosoftArchive/redis/releases ( 官方没有对应的 Windows 版本,如果是在Linux环境,去官网下载即可),在这里我选择的是 .msi,这个可以通过界面安装,只要点几下就可以安装完成,就不放安装过程图了。
安装成功后,确定启动了 Redis 服务,在 cmd 命令行中输入 redis-cli 就能进入到 Redis 命令行。(前提要把 Redis 的安装目录配置到环境变量,在安装过程有添加环境变量的选项,勾上即可)
安装 drf-extensions
可以在 Github 中搜索到,地址:https://github.com/chibisov/drf-extensions,drf-extensions 是 DRF 框架的自定义扩展的集合,其中就包含有缓存的扩展。
通过 pip 安装后,像下面的代码一样把 CacheResponseMixin 添加到 ViewSet 即可, 注意是添加到第一位 (如果使用的不是 ViewSet ,可以到文档中看看具体配置):
from myapps.serializers import UserSerializer
from rest_framework_extensions.cache.mixins import CacheResponseMixin
class UserViewSet(CacheResponseMixin, viewsets.ModelViewSet):
serializer_class = UserSerializer
这时可以启动 Django 项目测试看看,在访问数据前,F12 打开开发者中心,然后看看响应用了多少时间。
二次的响应时间相差了一倍,可见缓存起了效果了。
另外可以通过在 settings.py 文件中配置缓存过期时间,我这里设置了10s:
REST_FRAMEWORK_EXTENSIONS = {
'DEFAULT_CACHE_RESPONSE_TIMEOUT': 10
}
基于上面的两次访问,10s后再来访问一次看看
响应时间就变慢了,自己可以多测试几次看看结果。
但是!这里的缓存是存放在 Django 的服务器上,如果重启了服务器那么所有缓存就消失了,这可不行阿,所以要把缓存存放在别的地方,就是 Redis 上。
安装 django-redis
地址:https://github.com/niwinz/django-redis,这个库可以把缓存存放到 Redis 中,详细说明可以看文档,有中文文档。
安装好后只要一步就能配置成功,非常方便快捷,在 settings.py 中添加如下:
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
}
}
}
我这里 Redis 是没有设置密码的,如果设置了把 LOCATION 改为 redis://[:password]@localhost:6379
或者在 OPTIONS 中添加 "PASSWORD": "mypassword"
注意,要确定 Redis 的服务已经启动,然后再次运行 Django 项目,打开 cmd 命令行,进入到 redis 命令行,输入 keys *
,如果,现在是空的。
访问一下数据再来看看,有一条数据了,说明确实缓存下来了。
跟着,我们等个 10s ,等缓存过期后再看看会怎样···· 它又空了!缓存过期了 Redis 也会把数据给删掉。
缓存到此就配置好了,更高级的用法可以到文档中了解。