可以使用的缓存方式:
1.可以使用Memcached作为缓存 --- 内存,分布式 ,老---新redis(默认不支持)
2.可以使用数据库进行缓存 ---- 数据量大,效率低
3.可以使用文件缓存 --- 使用不方便,效率低
4.使用本地内存进行缓存
**5.可以接入其他存储方式 --- redis 内存,效率高
4.数据库缓存的使用:
1.在setting中配置缓存数据库:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
'LOCATION': 'my_cache_table',
}
}
LOCATION用来指定缓存数据库表的名字
2.执行 python manage.py createcachetable 会自动的数据库创建缓存表
3.使用:
直接在需要缓存的视图函数上加上装饰器即可:
如: @cache_page(60)
def testCache(request):
django会自动缓存该视图函数对应的html, ()中的参数表示缓存多长时间之后过期,单位秒
如果没有缓存会完整的加载数据,如果有缓存数据,直接就加载缓存数据
多个url指向同一视图函数.
每个视图缓存(如每个站点缓存)都是从URL键入的。 如果多个URL指向同一视图,则每个URL将单独缓存。 继续该my_view示例,如果您的URLconf看起来像这样:
urlpatterns = [
path('foo/<int:code>/', my_view),
]
5.自定义缓存
存,取
# 自定义缓存
def testCache(request):
# 判断缓存中是否有数据
# 从缓存中取数据,获取到缓存内容
cacheTest = cache.get("testcachehtml")
if cacheTest:#有数据--直接响应
return HttpResponse(cacheTest)
else:#没有数据,--加载并存到缓存中区
time.sleep(8)
tem = loader.get_template("testCache.html")
strHtml = tem.render()
# 保存到缓存中去
cache.set("testcachehtml",strHtml,60)
return HttpResponse(strHtml)
7.使用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",
}
}
}
3.使用redis缓存
与上面数据库缓存一样的用法
直接在需要缓存的视图函数上加上装饰器即可:
如: @cache_page(60)
def testCache(request):
django会自动缓存该视图函数对应的html, ()中的参数表示缓存多长时间之后过期,单位秒
如果没有缓存会完整的加载数据,如果有缓存数据,直接就加载缓存数据
4.注意:使用redis存储,需要启动redis服务,否则会报数据连接错误
启动redis
5.测试:
select 1 切换库
keys * 查看所有
get key 获取某个值
8.缓存数据库的配置
常用配置:
TIMEOUT:用于缓存的默认超时(以秒为单位)。此参数默认为300秒(5分钟)。您可以设置TIMEOUT为None默认情况下缓存键永不过期。值0使得键立即过期(实际上“不缓存”)。
OPTIONS中--- MAX_ENTRIES:删除旧值之前缓存中允许的最大条目数。此参数默认为300。