# 数据库缓存
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)