发表于: 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文件
运行此文件
另一个放测试结果
打开是这样的 感觉好高大上的样子
明天计划的事情:
评论