发表于: 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





返回列表 返回列表
评论

    分享到