Django中的缓存设置与使用

缓存

  • django内置了缓存框架,并提供了几种常用的缓存
    • 基于Memcached缓存
    • 使用数据库进行缓存
    • 使用文件系统进行缓存
    • 使用本地内存进行缓存
    • 提供缓存扩展接口

缓存配置

  1. 创建缓存表
python manage.py createcachetable [table_name]
  1. 缓存配置
 CACHES = {
           'default': {
               'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
               'LOCATION': 'cache_table',
               'TIMEOUT': '60',
               'OPTIONS': {
                   'MAX_ENTRIES': '300',
               },
               'KEY_PREFIX': 'jack',
               'VERSION': '1',
           }
       }
如使用redis数据库则进行更改:
			"default": {
			        'BACKEND':'django_redis.cache.RedisCache',
			        'LOCATION':'redis://127.0.0.1:6379/4',
			        'OPTIONS':{
			            'CLIENT_CLASS': 'django_redis.client.DefaultClient'
			        },
			        'KEY_PREFIX':'QF',
			    }

缓存使用

  • 在视图中使用(使用最多的场景)
  • @cache_page()
    • time 秒 60*5 缓存五分钟
    • cache 缓存配置, 默认default,
    • key_prefix 前置字符串

缓存底层

获取cache

from django.core.cache import cache
cache = cache['cache_name'] 或 cache = cache.get('cache_name')

设置cache

from django.core.cache import cache
cache.set(key, value, timeout)

使用原生缓存来实现

def get_user_list(request):
    
    # 每次从缓存中获取
    user_cache = cache.get('user_cache')
	
    # 如果有缓存,则从缓存中直接取
    if user_cache:
        result = user_cache
	
    # 如果没有缓存,则从数据库中获取
    else:
        # 模拟长时间的数据操作
        user_list = User.objects.all()
        time.sleep(5)
		
        data = {
            'users': user_list,
        }
		
        # 使用模板渲染,得到result文本
        template = loader.get_template('App/stu_list.html')
        result = template.render(data)
                
        # 设置缓存
        cache.set('user_cache', result, 10)

    return HttpResponse(result)

你可能感兴趣的:(Django中的缓存设置与使用)