发表于: 2017-08-30 19:34:47
1 1159
今天做的事:
今天上午在业务逻辑中把memcached缓存加进去,并且可以正常存取了。事实证明,往逻辑块里加东西是真的费劲,何况还是我自己写的,何况逻辑还不复杂,怪不得要解耦,真的难受!
看一下逻辑层的改动吧
新增插入职业页面
@RequestMapping(value = "/a/addProf",method = RequestMethod.GET)
public String getAdd(Map<String,Object> map){
map.put("profession",new Profession());
return "input";
}
@RequestMapping(value = "/a/addProf",method = RequestMethod.POST)
public String input(Profession profession){
System.out.println(profession);
pS.insert(profession);
return "redirect:/a/u/Profession";
}
相应的jsp
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ page language="java" pageEncoding="UTF-8" contentType="text/html; charset=utf-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>新增职业</title>
</head>
<body>
<h2>新增职业信息</h2>
<hr>
<form:form action="${pageContext.request.contextPath}/a/addProf" method="post" modelAttribute="profession">
pid:<form:input path="pid"/><br/>
picture:<form:input path="picture"/><br/>
profession:<form:input path="profession"/><br/>
introduce:<form:input path="introduce"/><br/>
level:<form:input path="level"/><br/>
difficult:<form:input path="difficult"/><br/>
growup:<form:input path="growup"/><br/>
scarcity:<form:input path="scarcity"/><br/>
salary1:<form:input path="salary1"/><br/>
salary2:<form:input path="salary2"/><br/>
salary3:<form:input path="salary3"/><br/>
tips:<form:input path="tips"/><br/>
ppid:<form:input path="ppid"/><br/>
<input type="submit" value="提交">
</form:form>
<hr>
</body>
</html>
然后在相应的页面调动中会使用到Service层,更改后的Service层代码
public List<BigProfession> getFrot_end(){
List<BigProfession> Frot_end;
if(MemcachedUtil.get("Frot_end") != null){
System.out.println("从缓存取出前端");
Frot_end =(List<BigProfession>) MemcachedUtil.get("Frot_end");
}else{
Frot_end =pM.getFrot_end();
MemcachedUtil.put("Frot_end",Frot_end,60);
}
return Frot_end;
}
public List<BigProfession> getBack_end(){
List<BigProfession> Back_end;
if(MemcachedUtil.get("Back_end") != null){
System.out.println("从缓存取出后端");
Back_end = (List<BigProfession>) MemcachedUtil.get("Back_end");
}else{
Back_end =pM.getBack_end();
MemcachedUtil.put("Back_end",Back_end,60);
}
return Back_end;
}
public boolean insert(Profession profession){
int i = pM.insert(profession);
if (i > 0) {
System.out.println("插入成功");
if(profession.getPid() == 1){
List<BigProfession> Frot_ends= pM.getFrot_end();
System.out.println("取出的前端列表" + Frot_ends);
MemcachedUtil.replace("Frot_end",Frot_ends,60);
System.out.println("缓存中的前端列表" + MemcachedUtil.get("Frot_end"));
}
if(profession.getPid() == 2){
List<BigProfession> Back_ends= pM.getBack_end();
System.out.println("取出的后端列表" + Back_ends);
MemcachedUtil.replace("Back_end",Back_ends,60);
System.out.println("缓存中的后端列表" + MemcachedUtil.get("Back_end"));
}
flag = true;
} else {
System.out.println("插入失败");
}
return flag;
}
这个往逻辑块里塞东西是真的烦,这块调试了好久。
最后在运行时,第一次读取是从数据库中,之后都是从缓存中读数据
接下来是JMeter测试
看到90%Line在1.8秒左右。这是整个项目的网页进行的请求,每个网页请求200次。
最后数据也插入进来了(忘插了一个字段)
将缓存去了
90%Line变短了,挺奇怪的。不清楚是什么原因,数据也插入成功了
所以。。。挺奇怪的。
这里有个bug,是部署服务器的时候有的,一个重定向的问题
response.sendRedirect("/a/login");
这里的跳转会跳转到服务器IP/a/login,缺少一段项目名,没办法,就手动添加了(也不知道有什么别的解决办法)
接下来就是配置Nginx的upstream的负载均衡了。
明天计划:配置负载均衡,然后替换Redis。
问题:暂无(服务器出现页面排版问题了,不知道咋回事,就不解决了,应该是前端页面的问题,本地是什么问题都没有)
收获:memcached配置全部完成,服务器也能跑了。
评论