• Django-缓存


    缓存框架的核心目标:

    1)较少的代码: 缓存应该尽可能快, 因此围绕缓存后的所有框架代码应该保持在绝对最小值, 特别是对于获取操作

    2)一致性: 缓存API应该是提供跨越不同缓存后端的一致接口

    3)可扩展性: 基于开发人员的需求, 缓存API应该可以在应用程序级别扩展

    缓存:

    Django内置了缓存框架, 并提供了几种常用的缓存

    1)基于Memcached缓存

    2)使用数据库进行缓存

    3)使用文件系统进行缓存

    4)使用本地内存进行缓存

    5)提供缓存扩展接口

    缓存配置:
    
    1,创建缓存表
    ./manage.py createcachetable [name]
    
    2,缓存配置:
    1) 系统缓存配置:
    # 作为 cache backend 使用配置 使用redis保存session
    CACHES = {
        "default": {
            "BACKEND": "django_redis.cache.RedisCache",
            "LOCATION": "redis://127.0.0.1:6379/9",
            "OPTIONS": {
                "CLIENT_CLASS": "django_redis.client.DefaultClient",
            },
            "KEY_PREFIX": "rock",
            "VERSION": "1",
        }
    }
    2) Redis 缓存配置:
    CACHES = {
        "default": {
            "BACKEND": "django_redis.cache.RedisCache",
            "LOCATION": "redis://127.0.0.1:6379/9",
            "OPTIONS": {
                "CLIENT_CLASS": "django_redis.client.DefaultClient",
            }
        }
    }
    
    两个的使用方法是一样的, 直接加一个装饰器 @cache_page(timeout=10)
    @cache_page(timeout=10)
    def news(request):
        news_list = []
        for i in range(10):
            news_list.append('最近贸易战又开始了%d' % i)
        sleep(15)
        return render(request, 'goods/news.html', {'news_list': news_list})
    
    若是多缓存,那么配置的时候:
    CACHES = {
        "default": {
            "BACKEND": "django_redis.cache.RedisCache",
            "LOCATION": "redis://127.0.0.1:6379/9",
            "OPTIONS": {
                "CLIENT_CLASS": "django_redis.client.DefaultClient",
            },
            "KEY_PREFIX": "rock",
            "VERSION": "1",
        },
    "redis_backend": {
    "BACKEND": "django_redis.cache.RedisCache",
    "LOCATION": "redis://127.0.0.1:6379/9",
    "OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", }
    } }
    使用的时候 @cache_page(timeout=10, cache='redis_backend') # 可以指定缓存cache 名字
  • 相关阅读:
    [转]一致性hash算法
    [转]算法的时间复杂度和空间复杂度详解
    [转]B树(多向平衡查找树)详解
    spring中ApplicationContextAware接口描述
    [转]web.xml中<url-pattern>详解
    [转]linux中vim命令
    [转]Java GC的原理
    [转]浅谈UML的概念和模型之UML九种图
    Jmeter做读取csv接口测试
    IDLE崩溃:IDLE's subprocess didn't make connection. Either IDLE can't start a...
  • 原文地址:https://www.cnblogs.com/wangyue0925/p/11347465.html
Copyright © 2020-2023  润新知