1、缓存

缓存的定义

  • 缓存是一类可以更快地读取数据的介质的统称,也指其它可以加快数据读取的存储方式。
  • 一般用来存储临时数据,常用介质的是读取速度很快的内存

意义:

  • 视图渲染有一定成本,数据库的频繁查询过高;
  • 所以对于低频变动的页面可以考虑使用缓存技术,减少实际渲染次数;
  • 用户拿到响应的时间成本会更低
  • web服务性能调优

image.png

2、Django中设置缓存

2.1、缓存方式1 - 数据库缓存(了解)

将缓存的数据存储在您的数据库中

说明:
尽管存储介质没有更换,但是当把一次负责查询的结果直接存储到表里,比如多个条件的过滤查询结果,可避免重复进行复杂查询,提升效率;

Django中配置方法

  1. # 设置数据库作为django的缓存设置
  2. CACHES = {
  3. 'default': {
  4. 'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
  5. 'LOCATION': 'my_cache_table',
  6. "OPTIONS": {
  7. "MAX_ENTRIES":300, # 缓存最大数据条数
  8. "CULL_FREQUENCY":2, # 缓存条数达到最大值时,删除 1/2 的缓存数据
  9. },
  10. },
  11. }

2.2、缓存方式2 - 本地内存缓存

可以将缓存放到跑Django服务的主机内存里,主要用于测试(测试环境)使用~
image.png
理论上,正式上线(生产环境)通常是把缓存存到一个内存型数据库中(例如Redis)

2.2.1、Django-设置Redis缓存

  1. # 设置redis作为django的缓存设置
  2. CACHES = {
  3. 'default': {
  4. 'BACKEND': 'django_redis.cache.RedisCache',
  5. 'LOCATION': 'redis://Redis的ip、端口、分库',
  6. "OPTIONS": {
  7. "CLIENT_CLASS": "django_redis.client.DefaultClient",
  8. "PASSWORD": "你的Redis数据库密码",
  9. # "DECODE_RESPONSES": True, #decode_response=True 返回字符串类型,不加返回字节类型
  10. },
  11. },
  12. # 可以写多设置
  13. 'user': {
  14. 'BACKEND': 'django_redis.cache.RedisCache',
  15. 'LOCATION': 'redis://Redis的ip、端口、分库',
  16. "OPTIONS": {
  17. "CLIENT_CLASS": "django_redis.client.DefaultClient",
  18. "PASSWORD": "你的Redis数据库密码",
  19. },
  20. },
  21. }
  22. # 配置缓存 Redis 相关
  23. REDIS_TIMEOUT = 7 * 24 * 60 * 60
  24. CUBES_REDIS_TIMEOUT = 60 * 60
  25. NEVER_REDIS_TIMEOUT = 365 * 24 * 60 * 60

CSDN:Django使用Redis进行缓存详细最全流程
https://blog.csdn.net/sinat_29699167/article/details/79699200
脚本之家:Django中redis的使用方法(包括安装、配置、启动)
https://www.jb51.net/article/135175.htm