缓存

配置缓存
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()

你可能感兴趣的:(缓存)