zoukankan      html  css  js  c++  java
  • django中使用redis和多缓存机制

    django中使用redis

    首页,需要电脑上装redis服务

    下载地址:

    https://github.com/MicrosoftArchive/redis/releases

    Redis 支持 32 位和 64 位。这个需要根据你系统平台的实际情况选择,这里我们下载 Redis-x64-xxx.zip压缩包到 D 盘redis文件夹下。

    然后,可以启动一个redis的临时服务

    打开cmd,进入到刚才解压到的目录,启动临时服务:redis-server.exe redis.windows.conf  (备注:通过这个命令,会创建Redis临时服务,不会在window Service列表出现Redis服务名称和状态,此窗口关闭,服务会自动关闭。)

     同样,打开另一个cmd窗口,客户端调用:redis-cli.exe -h 127.0.0.1 -p 6379

     查看redis的相关操作

     window安装redis可以参考  https://www.cnblogs.com/skmobi/p/11696620.html  的博客

     django中的配置,在seeting页面中添加如下配置

    CACHES = {
        'default': {
             'BACKEND': 'django_redis.cache.RedisCache',
             'LOCATION': 'redis://127.0.0.1:6379/1',
             'OPTIONS': {
                 "CLIENT_CLASS": "django_redis.client.DefaultClient"
             }
        }
    }

    然后添加一个url路由

    from django.urls import path
    
    from App import views
    app_name = 'app'
    urlpatterns = [
        path('news/', views.news, name="news"),
    ]

    接着去views中去添加这个视图函数

    # @cache_page(30)
    def news(request):
        # 自定义设置缓存
        result = cache.get("news")
        if result:
            return HttpResponse(result)
        new_list = []
        for i in range(10):
            new_list.append("最近贸易战又开始了%d" % i)
    
        sleep(5)
        data = {
            "new_list": new_list
        }
        response = render(request, 'news.html', context=data)
        cache.set('news', response.content, timeout=60)
        return response

    上面是自定义写的缓存,也可以直接使用装饰器@cache_page(30)

    这样就可以将news页面缓存在redis中了

    接下来说一下多缓存机智

    首页在setting中配置

    CACHES = {
        'default': {
            'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
            'LOCATION': 'django_cache',
            'TIMEOUT': 60 * 5
        },
        'redis_backend': {
            'BACKEND': 'django_redis.cache.RedisCache',
            'LOCATION': 'redis://127.0.0.1:6379/1',
            'OPTIONS': {
                "CLIENT_CLASS": "django_redis.client.DefaultClient"
            }
        }
    }

    上面一个是数据库缓存,一个是redis缓存,如果想要有数据库缓存,就需要先在数据库中创建一个缓存

    python manage.py createcachetable 数据库名字例如 
    python manage.py createcachetable  django_cache

    然后你可以链接数据库查看到数据库中多了一个django_cache表

    然后再视图函数views中调用的时候指定缓存到哪个里面

    @cache_page(60, cache="default")
    或者
    @cache_page(60, cache="redis_backend")
  • 相关阅读:
    第三十章 货币增长与通货膨胀
    第二十九章 货币制度
    第二十八章 失业
    第二十七章 金融学的基本工具
    第二十六章 储需、投资和金融体系
    第二十五章 生产与增长
    第二十四章 生活费用的衡量
    第二十三章 一国收入的衡量
    第二十二章 微观经济学前沿
    Struts2 文件上传进度条的实现
  • 原文地址:https://www.cnblogs.com/ldlx-mars/p/12485137.html
Copyright © 2011-2022 走看看