缓存
程序员文章站
2022-05-23 10:13:30
...
架构
CS架构(client/server):客户端/服务器
BS架构(brower/server):浏览器/服务器
区别:
- 客户端负载
- CS负载大
- 更新维护,收集用户信息,和用户交互,发送请求
- BS负载小,只负责展示,将逻辑处理的过程交给了服务器
- CS负载大
- 维护成本(版本迭代,bug修改,运维相关)
- CS大
- 需要下载更新包
- BS小
- 只需要修改服务器
- CS大
- 安全性
- CS高
- 需要下载客户端
- BS低
- 用户量群体较大,不稳定
- CS高
手机app
- 原生:安卓写的
- html:安卓->浏览器->html页面
数据库优化
- sql语句
- 增
- 删
- 改
- 查
- 少使用*
- 使用join代替子查询(where from–需要别名)
- 索引字段靠左原则
- where,group by,having
- 表结构优化
- 字段
- 字段类型的选择
- 主键外键
- 分表
- 三范式
- 字段
- 库结构优化
- 分库
- 水平
- 垂直
- 分库
- 水平分表
- 主键全局唯一
- 水平分库分表
- 事务的处理,关联查询
- 数据库架构优化
性能不高->IO操作
mysql数据存储在硬盘
硬盘->加载->内存->读
缓存
缓存是一类快速读取数据的介质。常用的缓存介质是读取数据快的内存。
一般来说,从数据库中多次将需要的数据取出,要比从内存中或者硬盘中一次性将数据取出来成本高。
对于大中型网站而言,使用缓存减少了数数据库的访问次数,从而提高了网站的性能。
缓存:缓存就是将数据提前放在一个地方(内存),访问时,直接从缓存中返回数据,不需要再次查询数据库。
缓存逻辑
判断想要的数据是否在缓存当中
- 是
- 直接返回数据
- 否
- 查询数据库,保存在缓存中,返回数据
缓存常用的方式
Memcache缓存:是分布式的高速缓存技术,是当下最火的,使用最多的。
(一)安装
1.本地安装
查看并启动服务
2.安装
pip install python-memcached
(二)在django项目中使用缓存
配置settings.py
找到全局settings.py文件
粘贴过来并修改
使用
1.在视图中使用
2.在路由中使用缓存
3.在中间件中使用
作用范围:全局
4.页面缓存
被cache标签包起来的部分会被缓存下来
5.视图内部数据的缓存
视图
from django.core.cache import cache
def cache_test(request):
# 从缓存中提取数据
# 根据order_number获取order_total
order_number = request.GET.get('order_number')
data = cache.get(order_number)
# 如果没有,数据查询,增加到缓存中
print('-----------------------')
if not data:
print('++++++++++++++++++++++')
payorder = PayOrder.objects.filter(order_number=order_number).first()
# 将数据写入cache
cache.set(order_number,payorder.order_total,60)
data = payorder.order_total
return HttpResponse('order_total:%s'%data)
路由
两次执行,控制台返回的效果不同
说明第一次调用时缓存中没有该数据,就进入了判断,进行了数据库查询后,将数据存入缓存中。
第二次调用时,缓存中有该数据,没有进入判断,直接从缓存中取出了。
上一篇: javac,java使用时的一些小札记
下一篇: SpringBoot 过滤器