[Python自学] day-22 (2) (缓存)

一、缓存

Django为我们提供了5种缓存机制:

1)开发调试用的缓存(什么都不干)

2)内存缓存

3)文件缓存

4)数据库缓存

5)memcache缓存

1.通用配置

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.dummy.DummyCache',  # 缓存引擎,每种缓存就引擎不同,其他是通用的

        # 以下是通用配置
        'TIMEOUT': 300,  # 缓存超时时间(默认300,None表示永不过期,0表示立即过期)
        'OPTIONS': {
            'MAX_ENTRIES': 300,  # 最大缓存个数(默认300)
            'CULL_FREQUENCY': 3,  # 缓存到达最大个数之后,剔除缓存个数的比例,即:1/CULL_FREQUENCY(默认3)
        },
        'KEY_PREFIX': '',  # 缓存key的前缀(默认空)
        'VERSION': 1,  # 缓存key的版本(默认1)
        'KEY_FUNCTION': 'func_name'  # 生成key的函数(默认函数会生成为:【前缀:版本:key】,默认函数名为 default_key_func)
    }
}

2.开发调试缓存

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.dummy.DummyCache',  # 开发调试缓存 引擎

        #通用配置放这里
    }
}

3.内存缓存

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',  # 内存缓存引擎
        'LOCATION': 'unique-snowflake',  # 保证命名唯一,因为内存缓存就是一个全局变量

        #通用配置放这里
    }
}

4.文件缓存

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',  # 文件缓存引擎
        'LOCATION': os.path.join(BASE_DIR,'cache'),  # 文件存放位置
        
        #通用配置放这里
    }
}

5.数据库缓存

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.db.DatabaseCache',  #数据库缓存引擎
        'LOCATION': 'my_cache_table',  # 使用的数据库表

        #通用配置放这里
    }
}

使用数据库缓存之前,要执行命令先创建一张缓存表:

python manage.py createcachetable

6.Memcache缓存

# 使用单台memcache
CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
        'LOCATION': '127.0.0.1:11211',
    }
}
# 使用本地memcache文件
CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
        'LOCATION': 'unix:/tmp/memcached.sock',
    }
}
# 使用简单集群
CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
        'LOCATION': [
            '172.19.26.240:11211', # 如果带权重,则加上权重 ('172.19.26.240:11211',5),
            '172.19.26.242:11211',                     #  ('172.19.26.242:11211',15),
        ]
    }
}

memcache的引擎除了有MemcachedCache(这个使用的是python-memcached模块),还可以使用PyLibMCCache引擎(这个使用的是pylibmc模块)。

猜你喜欢

转载自www.cnblogs.com/leokale-zz/p/12088998.html