1、官网查看资料
https://docs.djangoproject.com/en/2.1/topics/cache/
2、django缓存框架的特点
1、尽可能少的代码
2、尽可能的快
3、一致性:不同的数据存储方式,提供一致的借口(api)来访问
4、扩展性:可以介入外部的存储方式
3、可以使用的缓存方式
1、可以使用Memcached作为缓存 -- 内容,分布式,老(新的reids(默认不支持))
2、可以使用数据库进行缓存 -- 数据量大,效率低
3、可以使用文件缓存 -- 使用不方便,效率低
4、使用本地内存进行缓存
5、可以接入其他存储方式 -- redis 内存,效率高
4、数据库缓存的使用
1、在setting中配置缓存数据库
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
'LOCATION': 'my_cache_table',
}
}
LOCATION用来指定缓存数据库表的名字
2、执行命令
python manager.py createcachetable
会自动的数据库创建缓存表
3、使用:
直接在需要缓存的视图函数上加上装饰器即可:
如:@cache_page(60)
django会自动缓存该视图函数对应的html,()中的参数表示缓存多长时间之后过期,单位秒
如果没有缓存会完整的加载数据,如果有缓存数据,直接就加载缓存数据
多个url指向同一视图函数:
每个视图缓存(如每个站点缓存)都是从URL键入的。如果多个URL指向同一视图,则每个URL将单独缓存。
5、自定义缓存
def testCache(request):
# 判断缓存中是否有数据
# 从缓存中取数据,获取到缓存内容
cacheTest = cache.get('testCahce')
if cacheTest: # 有数据--直接响应
return HttpResponse(cacheTest)
else: # 没有数据,加载并存储到缓存中
time.sleep(3) # 假装到数据库取数据
tem = loader.get_template('testCache.html')
strHtml = tem.render()
# 保存到缓存中去
cache.set('testCahce',strHtml,60)
return HttpResponse(strHtml)
6、cache 缓存操作
1.包 : from django.core.cache import cache
2.操作:
存: cache.set(key,value,缓存时间)
取: cache.get(key)
add 添加
get_or_set 如果有对应的值表示获取,没有就设置
get_many 获取多个
set_many 设置多个值
delete 删除
delete_many 删除多个
clear 清除
touch 设置有效时间
7、使用redis数据库作为缓存数据库 – 快
1、资料
http://django-redis-chs.readthedocs.io/zh_CN/latest/#django
2、使用:
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)
django会自动缓存该视图函数对应的html, ()中的参数表示缓存多长时间之后过期,单位秒
如果没有缓存会完整的加载数据,如果有缓存数据,直接就加载缓存数据
4、注意
使用redis存储,需要启动redis服务,否则会报数据链接错误
启动redis:
在安装目录下的src目录下
输入命令:sudo ./redis-server
5、在redis中查询缓存数据
启动redis的客户端
在安装目录下的src目录下
输入命令:sudo ./redis-cli
select 1 切换库
keys * 查看所有
get key 获取某个值
8、缓存数据库的配置
常用配置:
TIMEOUT:用于缓存的默认超时(以秒为单位)。此参数默认为300秒(5分钟)。您可以设置TIMEOUT为None默认情况下缓存键永不过期。值0使得键立即过期(实际上“不缓存”)。
OPTIONS中--- MAX_ENTRIES:删除旧值之前缓存中允许的最大条目数。此参数默认为300。