码迷,mamicode.com
首页 > 其他好文 > 详细

Django使用redis实现缓存

时间:2020-04-01 13:17:47      阅读:74      评论:0      收藏:0      [点我收藏+]

标签:upd   步骤   option   dex   none   max   连接池   数据   obj   

 1. 安装

pip3 install django-redis

 

2. 配置(settings.py文件)

CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",  # 引擎
     "TIMEOUT": 300, # 缓存超时时间(默认300,None表示永不过期,0表示立即过期
"LOCATION": "redis://127.0.0.1:6379/1", # 1表是代表那个库 "OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", "PASSWORD": "mysecret", # 密码 "CONNECTION_POOL_KWARGS": {"max_connections": 100} # 连接池最大连接数 } } }

 注意: 在settings.py配置完后执行  python manage.py createcachetable

 

3. 缓存种类

  3.1views视图缓存

# 视图缓存
from django.shortcuts import render
from django.views.decorators.cache import cache_page
from cache.models import Foo


# 在需要缓存的视图上添加装饰器, 参数是设置timeout 超时时间, 单位是秒, 
@cache_page(60)
def index(request):
    bar = Foo.objects.all()
    return render(request, cache/index.html, {bar: bar})

 

  3.2模板缓存

步骤I. 引入TemplateTag
        {% load cache %}
步骤II. 使用缓存
        {% cache 5000 缓存key %}
            缓存内容
        {% endcache %}
{% load cache %}
{% cache 500 ‘cache_name‘ %}
    <div>container</div>
{% endcache %}

 

  3.3站点缓存(缓存整个网站)

MIDDLEWARE = [
    # 站点缓存 , 注意必须在第一个位置
    django.middleware.cache.UpdateCacheMiddleware,
    # ...
    # 站点缓存, 注意必须在最后一个位置
    django.middleware.cache.FetchFromCacheMiddleware,
]

 

具体操作

配置:

    # 缓存配置
    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"
                }
            }
        }


路由:

    # 缓存测试
    url(r^cache1/$,  views.cache1,name="cache1"),
    url(r^cache2/$,  views.cache2,name="cache2"),

视图:

    import datetime
    from django.views.decorators.cache import cache_page
    from django.core.cache import cache

    # 缓存整个视图函数
    @cache_page(10)
    def cache1(request):
        
        t =  datetime.datetime.now()
        return HttpResponse(t)

    # 在视图函数中缓存一部分内容
    def cache2(request):


        # 判断缓存是否存在数据
        a = cache.get(time,None)
        if a:
            print(缓存中存在数据)
            print(a)
        else:
            # 从模型中获取的数据
            a =  datetime.datetime.now()
            cache.set(time,a,10)
            print(缓存中,不存在数据,查询并缓存)
            print(a)

        # 不需要缓存的数据
        t =  datetime.datetime.now()
        print(t)

        return HttpResponse(t)

Django使用redis实现缓存

标签:upd   步骤   option   dex   none   max   连接池   数据   obj   

原文地址:https://www.cnblogs.com/zhuangshenhao/p/12120940.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!