一、缓存优化
都要查数据库的话要等数据库查完才能反应回来
1. 环境搭建
2. 缓存短信验证码
省流:将用户生成的手机验证码保存到stringRedisTemplate中,时间设置为1分钟,时间到自动销毁,登录成功也自动销毁
3.缓存菜品数据
按照分类去缓存菜品
@GetMapping("/list")
public R<List<Dish>> list(Long categoryId){
//生成key
String key = "dish_"+categoryId;
//判断缓存中是否已存在数据,若有直接读取不用查数据库
List<Dish> dishes = (List<Dish>) redisTemplate.opsForValue().get(key);
if (dishes!=null){
return R.success(dishes);
}
//没有的话在查询数据库,然后将结果缓存
LambdaQueryWrapper<Dish> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(Dish::getCategoryId,categoryId);
List<Dish> list = dishService.list(queryWrapper);
//存起来
redisTemplate.opsForValue().set(key,list);
return R.success(list);
}
4、Spring Cache
1.介绍
2.常用注解
3.使用方式
二、读写分离
需要解决问题:单台数据库访问压力过大
需要解决问题:磁盘损毁可能一台数据库就没了
1. Mysql主从复制
介绍(主库有一个、从库有多个):
配置-前置条件:
GRANT REPLICATION SLAVE ON *.* to 'xiaoming'@'%' identified by 'Root@123456';
change master to master_host='192.168.33.1',master_user='xiaoming',master_password='Root@123456',master_log_file='mysql-bin.000001',master_log_pos=154;
2. 读写分离案例
三、Nginx
1. Nginx 概述
2. Nginx命令
3. Nginx配置文件结构
4.Nginx具体应用
5.方向代理
正向代理:客户端知道代理服务器的存在
反向代理:客户端并不知道反向代理服务器的存在(客户端无感知,不用做任何设置)
6.负载均衡
四、前后端分离开发
1.内容介绍
2. Yapi
3.Swagger
后端人员经常使用的技术