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性能略好

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM