1. 程式人生 > 其它 >SpringBoot中RedisTemplate的GET效能測試

SpringBoot中RedisTemplate的GET效能測試

測試程式碼如下,為了更好體驗測試結果每種模式分別執行了三遍

package cn.hs;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisCallback;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.test.context.junit4.SpringRunner;

import javax.annotation.Resource; import java.nio.charset.StandardCharsets; @RunWith(SpringRunner.class) @SpringBootTest public class RedisTests { private static final String TYPE_NAME = RedisTests.class.getTypeName(); @Resource private RedisTemplate<String, Object> redisTemplate; @Test
public void contextLoads() { long time = System.currentTimeMillis(); initData(); initData(); initData(); System.out.println("redisTemplate.opsForValue().set 耗時:" + (System.currentTimeMillis() - time)); time = System.currentTimeMillis(); initDataByPipelined(); initDataByPipelined(); initDataByPipelined(); System.out.println(
"redisTemplate.executePipelined 耗時:" + (System.currentTimeMillis() - time)); } private void initData() { for (int i = 0; i < 10000; i++) { String key = TYPE_NAME + ":" + i; redisTemplate.opsForValue().set(key, key); } } private void initDataByPipelined() { for (int i = 0; i < 10000; i++) { String key = TYPE_NAME + ":" + i; redisTemplate.executePipelined((RedisCallback<Object>) redisConnection -> redisConnection.set(key.getBytes(StandardCharsets.UTF_8), key.getBytes(StandardCharsets.UTF_8))); } } }

輸出結果如下:

redisTemplate.opsForValue().set 耗時:125647
redisTemplate.executePipelined  耗時:137348

結果有點出乎意料,相同的網路環境,居然之家呼叫GET比使用pipeline效能略好