Django框架7:配置缓存

一、Django缓存说明:

        在动态网站中,用户访问的网站数据是根据数据库的内容实时变化的。

        这样就会存在一个问题:用户端频繁的刷新,会影响服务端的数据库的性能。

        使用缓存,可以把一些不需要实时刷新的数据,在一段时间内不访问数据库。

 官方介绍:https://docs.djangoproject.com/en/3.0/topics/cache/

二、根据缓存引擎分类,Django可以分为6种

        开发调试、内存缓存、文件缓存、数据库缓存、Memcache缓存

        

        settings.py中作如下配置

#-----------1、开发调试缓存(实际不产生任何缓存)--------------

CACHES={
'default':{
    'BACKEND':'django.core.cache.backends.dummy.DummyCache',            # 使用的测试引擎,不会产生任何缓存
    'TIMEOUT':300, # 共通项                                                    # 缓存生存周期
    'OPTIONS':{    # 共通项,任何类型的缓存都可以配置
        'MAX_ENTRIES': 300,                        # 最大缓存条数
        'CULL_FREQUENCY': 3,                       # 默认值是3,到达最大缓存后,删除当前缓存的条数,1/CULL_FREQUENCY'
        'KEY_PREFIX': '',                          # 缓存Key的前缀
        'VERSION': 1,                              # 缓存Key的版本
        'KEY_FUNCTION' : '函数名'                   # 生Key的函数,定义了如何将key、版本组合成最终的key,默认函数会生成(前缀:版本:key)
        
        },
    },
}


#-----------2、内存缓存--------------
# 缓存使用最近使用最少 least-recently-used (LRU) 的剔除策略。
CACHES = {
    'default': {
    'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',  # 内存缓存引擎
    'LOCATION': 'unique-snowflake',         # 给内存位置命名,只设一个缓存时,可省,如果设置了多个内存缓存,一定要设置名字,并且彼此不相同
    'TIMEOUT':300,                 
    'OPTIONS':{
        'MAX_ENTRIES': 300,          
        'CULL_FREQUENCY': 3,          
        },
    },
}

#-----------3、文件缓存--------------
CACHES = {
    'default': {
    'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',  # 文件缓存引擎
    'LOCATION': '/var/tmp/django_cache',         # 路径
    # 'LOCATION': 'c:/foo/bar',         # Windows路径
    'TIMEOUT':300,                 
    'OPTIONS':{
        'MAX_ENTRIES': 300,          
        'CULL_FREQUENCY': 3,          
        },
    },
}
    
#-----------4、数据库缓存--------------
    # 使用前,需要使用python manage.py createcachetable创建缓存数据库表,表名就是LOCATION的名字
    # 添加多数据库缓存时,python manage.py createcachetable,不会操作现有的表,会自动添加新表
    # 对于多数据库,可以添加缓存路由,参照官方
CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.db.DatabaseCache',    # 数据库缓存引擎
        'LOCATION': 'my_cache_table',
    }
}
#-----------3-1、多数据库缓存--------------
CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.db.DatabaseCache',    # 数据库缓存引擎
        'LOCATION': 'my_cache_table1',
    }
    'default_2': {
        'BACKEND': 'django.core.cache.backends.db.DatabaseCache', 
        'LOCATION': 'my_cache_table2',
    }
}



#-----------5、Memcache缓存--------------

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
        'LOCATION': '127.0.0.1:11211',                   # Memchache的ip地址
        # 'LOCATION': 'unix:/tmp/memcached.sock',        # 【unix:】是固定的,后面接Unix socket文件的路径
        'OPTIONS': {
            'server_max_value_length': 1024 * 1024 * 2,            # 配置缓存最大空间,1024bit(1K)*1024*2=2M
        }
    }
}


#-----------6、Pylibmc缓存--------------
CACHES = {

    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.PyLibMCCache',    # Pylibmc引擎
        'LOCATION': '127.0.0.1:11211',
        'OPTIONS': {
            'binary': True,
            'username': 'user',
            'password': 'pass',
            'behaviors': {
                'ketama': True,
            }
        }
    }
}
#-----------7、自定义缓存--------------
# 导入引擎配置文件,Django不推荐,因为Django带的引擎经过了测试
CACHES = {
    'default': {
        'BACKEND': 'path.to.backend',        # 自定义引擎
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章