前言
微信公众号:潇雷
当努力到一定程度,幸运自与你不期而遇。
背景
公司的数据库技术选型采用redis,每天会产生8亿条的数据往里面筛入。因此需要测一波redis的存储性能。下面就记录下自己的测试过程,以及一些踩过的坑。
测试需求
测试用多线程向redis中插入亿级数据。预期用10条线程向redis中插入8亿条数据。
服务器性能
本次测试采用自己的虚拟机测试:
参数 | linux指令 | 值 |
---|---|---|
系统 | cat /etc/redhat-release | CentOS Linux release 7.5.1804 (Core) |
内存 | free -h | total:3.7G available:3.3G |
cpu数量 | cat /proc/cpuinfo | cpu cores:2 |
HZ | cat /proc/cpuinfo ] grep MHz ] uniq | 1991.999 |
一、Jedis 单独插入测试
插入1w条数据
1、单线程:
1@Test 2void exec() throws InterruptedException {
3 Jedis jedis = new Jedis("192.168.44.101", 6379);
4 jedis.flushDB();
5 new Thread() {
6 @Override 7 public void run() {
8 String key = "32021420001:90000300009999:10001:1601198414621:";
9 long startTime = System.currentTimeMillis();
10 for (int j = 1; j <= 10000; j++) {
11 jedis.set(key+j+"",key+j+"");
12 }
13 long endTime = System.currentTimeMillis();
14 System.out.println("exec time : " + currentThread().getName()+":"+(endTime - startTime));
15 }
16 }.start();
17 System.out.println(Thread.currentThread().getName());
18 Thread.sleep(40000);
19}
单线程插入1w条数据需要的时间为4.7s
1main
2exec time : Thread-2:4784
2、两个线程
1@Test 2voi