springboot+ssm的分页功能压力测试mysql与redis对比

一、创建工程

新工程配置如下
在这里插入图片描述
一般喜欢把application.properties改成application.yml
内容如下:

server:
  port: 9000
spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://192.168.56.100:3306/shoppings
    username: root
    password: ok
  redis:
    database: 0
    host: 192.168.56.100
    port: 6379
    password:

项目目录结构如下:
在这里插入图片描述
services层
首先将结果放入redis

public void saveRedis() {
        List<String> res = new ArrayList<String>();
        List<Goods> goods = findAll();
        ObjectMapper om = new ObjectMapper();
        //把 List的 goods转成string
        try {
            for (Goods gs :goods) {

                res.add(om.writeValueAsString(gs));
            }
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
        //放入redis
        redisTemplate.opsForList().leftPushAll("good", res);
    }

将结果存放到redis后,修改代码,设置分页数

@Service
public class GoodsService {
    @Autowired
    private GoodsDAO gdao;
    @Autowired
    private StringRedisTemplate redisTemplate;

    public List<Goods> findAll(int pg) {
        return gdao.findAll((pg-1)*20);
    }

//    public void saveRedis() {
//        List<String> res = new ArrayList<String>();
//        List<Goods> goods = findAll();
//        ObjectMapper om = new ObjectMapper();
//        //把 List的 goods转成string
//        try {
//            for (Goods gs :goods) {
//
//                res.add(om.writeValueAsString(gs));
//            }
//        } catch (JsonProcessingException e) {
//            e.printStackTrace();
//        }
//        //放入redis
//        redisTemplate.opsForList().leftPushAll("good", res);
//    }


    public List<String> findRedisData(int pg) {
        return redisTemplate.opsForList().range("good", (pg-1)*20, pg*20-1);
    }
}

controller层
执行save将结果放入redis中

 @RequestMapping("/save")
    public String save() {
        goodsService.saveRedis();
        return "ok";
    }

修改代码,执行分页功能

@RestController
public class InitCtrl {
    @Autowired
    private GoodsService goodsService;

    @RequestMapping("/mysql")
    public List<Goods> init(int pg) {
        return goodsService.findAll(pg);
    }

//    @RequestMapping("/save")
//    public String save() {
//        goodsService.saveRedis();
//        return "ok";
//    }

    @RequestMapping("/redis")
    public List<String> rd(int pg) {
       return goodsService.findRedisData(pg);
    }
}

Application类上面配置注解

@SpringBootApplication
@MapperScan("com.njbdqn.msrd.dao")

二、 Postman测试

1.软件安装
 下载地址: https://pan.baidu.com/s/1HfWNXFWZGFVu1qCtTjtQQA
 提取码:7oxc
双击安装软件,测试
在这里插入图片描述

三、jmeter压力测试Redeis对比MySQL

建立测试计划TestPlan
设置线程组

添加一个HttpRequest
在这里插入图片描述
正确填写HttpRequest内容

在这里插入图片描述
添加Lisenter查看结果
在这里插入图片描述
添加随机变量值
在这里插入图片描述

设置页面随机变量

结果比较:
Redis结果average:5
在这里插入图片描述
MySQL结果:average:10685
在这里插入图片描述

发布了27 篇原创文章 · 获赞 19 · 访问量 1299

猜你喜欢

转载自blog.csdn.net/weixin_42804692/article/details/103190026
今日推荐