专栏首页学习猿地学习猿地 python教程 django教程9 Django使用redis实现缓存

学习猿地 python教程 django教程9 Django使用redis实现缓存

# Django使用redis实现缓存

### 环境搭建安装

* 1,安装redis服务

```

sudo apt-get install redis

```

* 2,安装django组件

```

sudo pip3 install django-redis

```

### Django项目配置

```py

settings.py

CACHES = {

"default": {

# 引擎

"BACKEND": "django_redis.cache.RedisCache",

# 缓存超时时间(默认300,None表示永不过期,0表示立即过期)

'TIMEOUT': 300,

"LOCATION": "redis://127.0.0.1:6379/1",

"OPTIONS": {

"CLIENT_CLASS": "django_redis.client.DefaultClient",

# "PASSWORD": "mysecret"

}

}

}

```

### 视图缓存:

> 使用缓存框架的更细化的方式是缓存单个视图的输出。`django.views.decorators.cache`

>

> 定义一个`cache_page`装饰器,它会自动缓存视图的响应

```py

views.py

# 在需要缓存的视图上添加装饰器, 参数是设置timeout 超时时间, 单位是秒,

from django.views.decorators.cache import cache_page

@cache_page(10)

def index(request):

t = datetime.datetime.now()

return HttpResponse(t)

```

### 自定义缓存 :

> 例如,您的站点可能包含一个视图,其结果取决于几个昂贵的查询,其

>

> 例如,您的站点可能包含一个视图,其结果取决于几个昂贵的查询,其结果以不同的时间间隔进行更改。

>

> 在这种情况下,使用每个站点或每个视图缓存策略提供的全页缓存是不理想的,因为您不希望缓存整个结果(因为有些数据经常更改),但您仍然希望缓存很少更改的结果

>

> 在这样的情况下,Django提供了一个简单的,低层次的缓存API。

>

> 您可以缓存任何Python对象:字符串、字典、模型对象列表等等

>

> 基本语法: set\(key, value, timeout\) get\(key\)

```py

from django.core.cache import cache

cache.set('my_key', 'hello, world!', 30)

cache.get('my_key')

```

### 模板缓存

> 您还可以使用`cache`模板标签来缓存模板片段。

>

> 为了让您的模板可以访问此标记,请放在模板的顶部附近。`{ % load cache % }`。

>

> [文档地址](https://docs.djangoproject.com/en/1.11/topics/cache/#template-fragment-caching): [https://docs.djangoproject.com/en/1.11/topics/cache/\#template-fragment-caching](https://docs.djangoproject.com/en/1.11/topics/cache/#template-fragment-caching)

### 站点缓存:

> 缓存设置完成后,使用缓存的最简单方法是缓存整个网站

>

> [文档地址](https://docs.djangoproject.com/en/1.11/topics/cache/#the-per-site-cache): [https://docs.djangoproject.com/en/1.11/topics/cache/\#the-per-site-cache](https://docs.djangoproject.com/en/1.11/topics/cache/#the-per-site-cache)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 学习猿地 python教程 django教程9 Django使用redis实现缓存

                "BACKEND": "django_redis.cache.RedisCache",

    学习猿地
  • Python数据库操作 Mysql数据库导入导出和授权#学习猿地

    mysqldump -u root -p tlxy > ~/Desktop/code/tlxy.sql

    学习猿地
  • Python数据库操作 Mysql数据库导入导出和授权#学习猿地

    mysqldump -u root -p tlxy > ~/Desktop/code/tlxy.sql

    学习猿地
  • 学习猿地 python教程 django教程9 Django使用redis实现缓存

                "BACKEND": "django_redis.cache.RedisCache",

    学习猿地
  • Django配置缓存机制

    Django 官方关于cache的介绍:https://docs.djangoproject.com/en/dev/topics/cache/

    緣來
  • Django实战-星座运势接口封装

    Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(...

    小团子
  • Nginx学习之缓存配置

    项目采用的是Nginx+Tomcat,Nginx处理静态请求并缓存,Tomcat处理动态请求。 缓存配置proxy_cache.conf: #设置Web缓存区名...

    小柒2012
  • linux buffer cache的回收

    在Linux系统中,我们经常用free命令来查看系统内存的使用状态。在一个RHEL6的系统上,free命令的显示内容大概是这样一个状态:

    domain0
  • Hibernate缓存配置

    一级缓存 Hibernate的一级缓存是由Session提供的,因此它只存在于Session的生命周期中,当程序调用save(),update(),saveo...

    大道七哥
  • 【深度学习进阶模型详解】概率图模型/深度生成模型/深度强化学习,复旦邱锡鹏老师《神经网络与深度学习》教程分享05(附pdf下载)

    【导读】复旦大学副教授、博士生导师、开源自然语言处理工具FudanNLP的主要开发者邱锡鹏(http://nlp.fudan.edu.cn/xpqiu/)老师撰...

    WZEARW

扫码关注云+社区

领取腾讯云代金券