缓存

作者: 13147abc | 来源:发表于2019-03-03 13:30 被阅读0次
    配置缓存
    CACHES = {
      #默认缓存
      'default' : {
          'BACKEND' : 'djago_redis.cache.RedisCache',
          'LOCATION' : [
            'redis://1.2.3.4:6379/0',
    ],
          'KEY_PREFIX' : 'fangtx',
          'OPTIONS' : {
            'CLIENT_CLASS':'django_redis.client.DefaultClient',
            'CONNECTION_POOL_KWARGS' : {
              'max_connections' : 1000,
    },
            'PASSWORD' : '1qaz2wsx',
    }
    },
      #页面缓存
      'page' : {
          'BACKEND' : 'djago_redis.cache.RedisCache',
          'LOCATION' : [
            'redis://1.2.3.4:6379/1',
    ],
          'KEY_PREFIX' : 'page',
          'OPTIONS' : {
            'CLIENT_CLASS':'django_redis.client.DefaultClient',
            'CONNECTION_POOL_KWARGS' : {
              'max_connections' : 500,
    },
            'PASSWORD' : '1qaz2wsx',
    }},
    # 会话缓存
      'session' = {
          'BACKEND' : 'djago_redis.cache.RedisCache',
          'LOCATION' : [
            'redis://1.2.3.4:6379/2',
    ],
          'KEY_PREFIX' : 'session',
          'TIMEOUT' : 1209600,
          'OPTIONS' : {
            'CLIENT_CLASS':'django_redis.client.DefaultClient',
            'CONNECTION_POOL_KWARGS' : {
              'max_connections' : 2000,
    },
            'PASSWORD' : '1qaz2wsx',
    }},
    # 接口数据缓存
      'api' = {
          'BACKEND' : 'djago_redis.cache.RedisCache',
          'LOCATION' : [
            'redis://1.2.3.4:6379/3',
    ],
          'KEY_PREFIX' : 'api',
          'OPTIONS' : {
            'CLIENT_CLASS':'django_redis.client.DefaultClient',
            'CONNECTION_POOL_KWARGS' : {
              'max_connections' : 500,
    },
            'PASSWORD' : '1qaz2wsx',
    }
    },
    }
    

    说明:通过Redis底层提供的额多个数据库用来隔离缓存数据有助于缓存数据的管理,如果配置了Redis的主从复制(读写分离),LOCATION列表中可以配置多个Redis连接,第一个被视为master用来进行读写操作,后面的被视为slave用来进行读操作。

    全站缓存
    MIDDLEWARE = [
      'django.middleware.cache.UpdateCacheMiddleware',
      'django.middleware.common.CommonMiddleware',
      'django.middleware.cache.FetchFromCacheMiddleware',
    ]
    CACHE_MIDDLEWARE_ALIAS = 'default'
    CACHE_MIDDLEWARE_SECONDS = 300
    CACHE_MIDDLEWARE_KEY_PREFIX = 'django:cache'
    
    视图层缓存
    from django.views.decorators.cache import cache_page
    from django.views.decorators.vary import vary_on_cookie
    
    @cache_page(timeout = 60 * 15, cache = 'page')
    @vart_on_cookie
    def my_view(request):
      pass
    
    from django.views.decorators.cache import cache_page
    
    urlpatterns = [
      url(r'^foo/([0-9]{1,2})/$',cache_page(60 * 15)(my_view)),
    ]
    
    其他内容

    1.模板片段缓存。

    • {% load cache %}
    • {% cache %} / {% endcache %}
      2.使用底层API访问缓存。
    from django.core.cache import cache
    
    cache.set('my_key', 'hello,world', 30)
    cache.get('my_key')
    cache.clear()
    
    from django.core.cache import caches
    cache1 = cache['page']
    cache2 = caceh['page']
    cache1 is cache2 # True
    
    cache3 = cache['session']
    cache2 is cache3 # False
    
    from django_redis import get_redis_connection
    redis_client = get_redis_connection()
    redis_client.hgetall()
    

    相关文章

      网友评论

          本文标题:缓存

          本文链接:https://www.haomeiwen.com/subject/gmppuqtx.html