发表于: 2020-05-23 23:58:40
1 1586
今天完成的事情:
写了个
查询用户的 缓存逻辑 (有就取出,没有就查完再建一个)
还有添加用户 要维护缓存(更新缓存)
/**
* @Author: TianBo
* @Description: 查询所有学员 ,有缓存取缓存 没缓存新增一个缓存
* @Date: 2020/5/23
* @return: java.util.List<com.mb.enity.student>
**/
@Override
public List<student> FindAll() {
//取出所有学生的缓存
List<student> rs = (List<student>) client.get("AllStudent");
logger.info("查询出的缓存值为" + rs);
//如果缓存不为空 返回缓存数据
if (rs == null) {
//如果没有该条缓存,则从数据库里进行查询 再添加新缓存
logger.info("缓存为空,现在从数据库查询数据");
List<student> rss = studentMapper.FindAll();
logger.info("从数据库中查询处的数据为" + rss);
//把从数据库查出的的数据放进缓存
try {
client.set("AllStudent", rss);
logger.info("添加新缓存的key为:AllStudent ========= value为" + rss);
} catch (Exception e) {
logger.info("添加新缓存失败");
e.printStackTrace();
}
return rss;
} else {
logger.info("查询到缓存值不为空,返回缓存");
return rs;
}
}
/**
* @Author: TianBo
* @Description: 查询所有学员 不填加缓存
* @Date: 2020/5/23
* @return: java.util.List<com.mb.enity.student>
**/
@Override
public List<student> NoMemFindAll() {
logger.info("现在从数据库查询数据");
List<student> rss = studentMapper.FindAll();
logger.info("从数据库中查询处的数据为" + rss);
return rss;
}
/**
* @Author: TianBo
* @Description: 插入一条新数据,并且更新缓存
* @Date: 2020/5/23
* @Param student:
* @return: int
**/
@Override
public int AddStudent(student student) {
logger.info("添加的数据为" + student);
//添加数据
studentMapper.AddStudent(student);
//刷新缓存
//取出增加所有学员后所有学生的缓存
List<student> rs = (List<student>) client.get("AllStudent");
logger.info("添加用户后的缓存为" + rs);
//如果缓存不为空 更改缓存数据
if (!rs.isEmpty()) {
logger.info("缓存值不为空");
//更改缓存数据
try {
logger.info("准备更新缓存");
client.replace("AllStudent", rs);
logger.info("更改后的缓存key为:AllStudent" + "=======" + "value为:" + rs);
} catch (Exception e) {
logger.info("更改缓存值失败");
e.printStackTrace();
}
}
//返回刚刚插入用户的id
return student.getId();
}
}
控制层
@Controller
public class MemcachedController {
@Autowired
studentService studentService;
//有缓存返回json
@ResponseBody
@RequestMapping(value = "/memFindTest",method = RequestMethod.GET)
public List<student> memFindTest() {
List<student> list = studentService.FindAll();
return list;
}
//无缓存返回json
@ResponseBody
@RequestMapping(value = "/NomemFindTest",method = RequestMethod.GET)
public List<student> NoMemFindTest() {
List<student> list = studentService.NoMemFindAll();
return list;
}
}
查询 返回json数据
测试
还差57个卡死了... 没缓存比有缓存还快 这...
2000 . 1 .1
跑2000还差600个卡死了
怎么没缓存比有缓存还快呢 我这不对啊...
我任务3写的三个页面
测了下
三个页面顺序
homepage 首页 页面内容多 查询数据多 设置得超过50000ms就停止线程
profession 职业 页面内容少 查询数据多
test 随便写的 页面内容非常少 不需要查询数据
他们之间的数据变化。
20.1.2
20.1.20
50.1.2
50.1.5 首页开始出现异常错误了 4%
100 1 50 首页40%错误
200 1 50 70%了
500 1 50 跑一半就完蛋
不带缓存 我这任务3 三个jsp的页面 超过50线程 2个并发
首页就开始出错了
职业 test不会出错 但响应速度慢了很多
明天计划的事情:
json 测压修改
jsp页面带缓存 还没测试
nginx upstrem
redis
评论