利用缓存提高性能

发布于 2020-02-20 21:22:59   阅读量 154  点赞 0  

 Django 中内置了一套缓存机制,通过将数据保存在IO性能较高的缓存上,可以提高网站的访问速度。Django 内置的缓存框架提供了以下几种常用的缓存:

  • 基于Memcached缓存;
  • 使用数据库进行缓存;
  • 使用文件系统进行缓存;
  • 使用本地内存进行缓存;

一、配置缓存

  1. 创建缓存表:

    python manage.py createcachetable [table_name]
    
  2. settings.py中做好配置:

    CACHES = {
     'default': {
         'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
         'LOCATION': 'my_cache_table',   # 缓存数据表
         'TIMEOUT': '60',    # 设置缓存中数据的过期时间
         'OPTIONS': {
             'MAX_ENTRIES': '300',   # 设置最大的数据条目
         },
         'KEY_PREFIX':'wjiaman',     # 前置字符串
     }
    }
    

     在CACHES中除了default还可以配置多个缓存。

二、缓存的使用

 缓存的常见用法有两种:

1. 装饰器

 对相应的视图函数使用装饰器@cache_page(),Django就会对该视图需返回的数据进行缓存,@cache_page()的配置参数有:

  1. time:以秒为单位设置过期时间;
  2. cache:使用settings.py中配置好的哪个缓存,默认为default
  3. key_prefix:指定前置字符串
2. 代码操作

 也可以在底层通过代码操作缓存,若无特殊要求一般不推荐使用。

  1. 获取缓存对象:

    from django.core.cache import caches
    cache = caches['cache_name']
    

    其中cache_namesettings.py中配置好的缓存。

  2. 缓存操作:

  • cache.set

    • key
    • value
    • timeout
  • get(默认存入缓存的键名为对应的视图函数名)

  • add

  • get_or_set

  • set_many

  • get_many

  • delete

  • delete_many

  • clear

  • incr(key,value=1)

  • decr(key,value=1)

三、使用Redis做缓存

 Redis的常见实现有两个:

  • django-redis

  • django-redis-cache

 使用时的配置与内置的缓存配置基本一致:

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

 用法也与内置缓存使用一样。


Last Modified : 2020-03-09 21:22:59