Django 缓存

Posted ifanliwei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django 缓存相关的知识,希望对你有一定的参考价值。

# 数据库缓存
CACHES = {
	‘default‘: {
        ‘BACKEND‘: ‘django.core.cache.backends.db.DatabaseCache‘,
        ‘LOCATION‘: ‘tbl_cache‘, # 数据表名称
        # 一下为默认值
        ‘TIMEOUT‘: 60, # 超时时间 60S, 默认为None,永不过期
        ‘KEY_PREFIX‘: ‘‘, # 键前缀
        ‘OPTIONS‘: {
            ‘MAX_ENTRIES‘: 1000, # 最大缓存记录量
            ‘CULL_FREQUENCY‘: 3 # 到达最大缓存记录量时,剔除缓存的数量
        }
    }
}

# 文件系统缓存
CACHES = {
    ‘default‘: {
        ‘BACKEND‘: ‘django.core.cache.backends.filebased.FileBaseCache‘,
        ‘LOCATION‘: ‘cache‘ # 文件保存路径
    }
}

# 本地缓存
CACHES = {
    ‘default‘: {
        ‘BACKEND‘: ‘django.core.cache.backends.locmem.LocMemCache‘,
        ‘LOCATION‘: ‘unique-snowflake‘ # 存储器名称
    }
}

创建缓存表

python manage.yp createcachetable
from django.views.decorators.cache import cache_page
from django.core.cache import cache

@cache_page(timeout=10)
def index(request):
    # cache.set(key,value,timeout = DEFAULT_TIMEOUT,version = None)
    cache.set("key", "value", 30)
    # cache.get(key,default=None,version=None)
    cache.get("key")
    # 如果已经存在,则不重新设置
    # cache.add(key,value,timeout=DEFAULT_TIMEOUT,version=None)
    # 获取键对应的值,如果不存在,则设置新值。
    # cache.get_or_set(key,default,timeout=DEFAULT_TIMEOUT,version=None)
    # 一次性设置多个键对应的值
    cache.set_many({"a":1, "b": 2, "c": 3}, timeout=None)
    # 一次性获取多个键对应的值
    cache.get_many(["a", "b"], version=None)
    # 删除
    cache.delete(key)
    cache.delete_many(["a", "b"])
    cache.clear()
    # 设置新的过期时间
    # cache.touch(key, timeout=DEFAULT_TIMEOUT, version=None)
    # 不能保证原子的加减值操作
    # cache.incr(key, delta=1,version=None)
    # cache.decr(key, delta=1,version=None)

以上是关于Django 缓存的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Django Summernote 中显示编程片段的代码块?

Android获取各个应用程序的缓存文件代码小片段(使用AIDL)

django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE的解决办法(转)(代码片段

django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE的解决办法(转)(代码片段

更改代码时出现 Django、Nginx、FastCGI 缓存问题

Swift新async/await并发中利用Task防止指定代码片段执行的数据竞争(Data Race)问题