使用缓存
在setting中配置缓存数据库,在setting最后加上:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
'LOCATION': 'my_cache_table',
}
}
LOCATION用来指定缓存数据库表的名字, 可修改
配置好setting之后执行以下指令,创建缓存表
python manage.py createcachetable
使用缓存表直接在需要缓存的试图函数上加上装饰器@cache_page(time)即可
time表示保存该缓存的时长,单位为秒
自定义缓存
以demo举例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
加载成功
</body>
</html>
def testCache(request):
# 判断缓存中是否有数据
# 从缓存中取数据,获取到缓存内容
cacheTest = cache.get("testcachehtml")
if cacheTest:#有数据--直接响应
return HttpResponse(cacheTest)
else:#没有数据,--加载并存到缓存中区
# sleep模拟从数据库加载数据需要的时间
time.sleep(4)
tem = loader.get_template("testCache.html")
strHtml = tem.render()
# 保存到缓存中去
cache.set("testcachehtml",strHtml,60)
return HttpResponse(strHtml)
缓存操作
存: cache.set(key,value,缓存时间)
取: cache.get(key)
add 添加
get_or_set 如果有对应的值表示获取,没有就设置
get_many 获取多个
set_many 设置多个值
delete 删除
delete_many 删除多个
clear 清除
touch 设置有效时间
使用redis作为缓存数据库
1、安装对应的模块
pip install django-redis
2、在setting中进行配置,将创建缓存表的配置修改为:
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/1",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
}
}
}
使用redis缓存与使用缓存表的用法一致
注:使用redis存储,需要启动redis服务,否则会报数据连接错误
配置redis时常用的配置:
TIMEOUT:用于缓存的默认超时(以秒为单位)。此参数默认为300秒(5分钟)。您可以设置TIMEOUT为None默认情况
下缓存键永不过期。值0使得键立即过期(实际上“不缓存”)。
OPTIONS中--- MAX_ENTRIES:删除旧值之前缓存中允许的最大条目数。此参数默认为300。
具体配置可参考网站:https://django-redis-chs.readthedocs.io/zh_CN/latest/#django