前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >学习猿地 python教程 django教程9 Django使用redis实现缓存

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

原创
作者头像
学习猿地
修改2020-03-24 14:42:11
3050
修改2020-03-24 14:42:11
举报
文章被收录于专栏:学习猿地学习猿地

# 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)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档