刨析django----缓存

缓存

更快的读取数据------介质的统称,也可指加快数据读取的存储形式。
一般用于 存储 临 时 数 据 临时数据

常用介质:内存
比磁盘快百倍

在这里插入图片描述

缓存的优点

加快数据读取速率,提高响应的速率

案例分析:

#url: /test_cache
#view
def test_cache(request):
	#query db
	data = Book.objects.all()  #查询数据库有延时,假如5s
	
	#locals() 局部变量字典
	return render(request,"test_cache.html",locals())

该视图,在渲染页面时,至少需5s

怎么提高效率?

解决方案:加入缓存技术
在这里插入图片描述

#url: /test_cache
#view
r = redis.Redis("localhost",6379)
def test_cache(request):
	#查询数据,优先走缓存
	data = r.get("data")
	if data:
		return render(request,"test_cache.html",locals())
		
	#缓存没有,再走数据库
	data = Book.objects.all()  #查询数据库有延时,假如5s
	#将查询的数据,放入缓存一份
	r.set("data",data)
	
	#locals() 局部变量字典
	return render(request,"test_cache.html",locals())

if 请求的页面 in cache:
    返回
else:
    渲染页面,放入缓存,并返回

缓存使用场景

渲染页面的复杂度高--------------考虑缓存

  1. 博客列表页,有多项数据
  2. 电商商品详情页,信息短时间不变

缓存的地方,变化频率低

Django配置缓存

  1. 数据库缓存
    存于磁盘,数据量少,读取速度快
  2. 内存缓存
    存于内存,读取速度快,如redis
#settings.py中配置
#磁盘缓存
CACHES = {
	"default":{
		"BACKEND":"django.core.cache.backends.db.DatabaseCache",
		"LOCATION":"cache_table", #python3 manage.py createcachetable
		"TIMEOUT":300,  #默认存储300s  过期
		"OPTIONS":{
			"MAX_ENTRIES":300, #最多存储300条
			"CULL_FREQUENCY":2,#满时,删除2条
		}
	}
}

#内存缓存使用django-redis
#sudo pip3 install django-redis
CACHES = {
	"default": {
		"BACKEND": "django_redis.cache.RedisCache",
		"LOCATION": "redis://localhost:6379/1",
		#"LOCATION": "redis://user:pw@localhost:6379/1",
		"TIMEOUT": 300, #300s
		"OPTIONS": {
			"CLIENT_CLASS": "django_redis.client.DefaultClient",
			"PASSWORD": "xxxxx",
		}
	}
}

练习

创建一个django项目
1. 配置MySQL,建库
2. 配置缓存
3. Django使用缓存------>整体缓存
    3.1 路由中,使用缓存
        path(“test_cache/”,cache_page(30)(cache_view))
    3.2 视图中,使用缓存
        from django.views.decorators.cache import cache_page
        @cache_page(30)
        def cache_view(request):
            xxx
4. 定义一个视图函数,响应当前时间戳,查看响应
5. 加入缓存,再次查看响应

代码
提取码:5kyz

 
 
 
 

上一篇:django问题点-----数据库的时区问题
下一篇:刨析django----缓存2

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

laufing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值