发表于: 2020-05-24 23:43:27

1 1619


今天完成的事情:


1.修改了memcached 缓存的代码

昨天的添加缓存有问题


三个方法  

1.带缓存  查询所有学员

2.不带缓存  查询所有学员

3.添加学员  更新缓存        

    /**
     * @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("缓存值不为空,现在返回缓存");
           return rs;

       } else {

           //如果没有该条缓存,则从数据库里进行查询   再添加新缓存
           logger.info("缓存为空,现在从数据库查询数据");
           List<student> rss = studentMapper.FindAll();
           logger.info("从数据库中查询处的数据为" + rss);
           //把从数据库查出的的数据放进缓存
           try {
               boolean state = client.set("AllStudent", rss);
               logger.info("添加新缓存的key:AllStudent ========= value" + rss);
               logger.info("是否已经进缓存"+state);

           } catch (Exception e) {
               logger.info("添加新缓存失败");
               e.printStackTrace();
           }
           return rss;
       }
   }

   /**
     * @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 != null) {
           logger.info("缓存值不为空");

           //更改缓存数据
           try {
               logger.info("开始更新缓存");
               boolean state = client.replace("AllStudent", rs);
               logger.info("更新缓存结果+"+state );
           } catch (Exception e) {
               logger.info("更改缓存值失败"+e.toString());
               e.printStackTrace();
           }
  }
       //返回刚刚插入用户的id
       return student.getId();
   }
}


本地 压测

有缓存  没缓存    瞬间差距就出来了




放到服务器  测压  

跑到3700样本时Jmeter卡死了   这就算宕机了       


90%line也终于体现出有缓存     没缓存的差距了   速度比较快  吞吐量也超过了一倍

 TPS 有缓存为 19.7/S        无缓存为8.5/S




又单独跑个1000    无缓存居然崩了一半 


看了下后期的线程   无缓存的查询  一会好一会错误     可能频繁查询给数据库的压力太大了 ,请求就会部分出错

那这么看来  也体现了缓存的优点:不频繁查询数据库  防止数据库压力过大。




有缓存的JSON接口      90%Line 在500ms下    TPS约为30/S

   


无缓存的JSON接口          90%Line 在500ms下   TPS约为40/S





2.服务器安装了  Jmeter    memcached

过程不写了   照着教程来    路径啥的别敲错就行  


linux安装  jmeter5.1.1 

https://www.cnblogs.com/VivianBai/p/linux_jmeter.html



linux安装memcached:

https://www.cnblogs.com/PatrickLiu/p/8962070.html



jmeter在linux上的使用:


 要新建俩文件夹   Test 和 Result


一个放Jmx文件

运行此文件


另一个放测试结果


打开是这样的   感觉好高大上的样子



明天计划的事情:



返回列表 返回列表
评论

    分享到