@Autowired
RedisTemplate<Object, Object> redis;
@GetMapping("/redisTest")
@ResponseBody
public String test() {
RedisUtil redisUtil = new RedisUtil(redis);
int number = 5;
Long start = System.currentTimeMillis();
for (int i = 0; i < number; ++i) {
redisUtil.set(("T" + i), (i + ""));
}
Long end = System.currentTimeMillis();
System.out.println("--" + (end - start));
// 1.executePipelined 重寫 入參 RedisCallback 的doInRedis方法
List<Object> resultList = redis.executePipelined(new RedisCallback<Object>() {
@Override
public String doInRedis(RedisConnection connection) throws DataAccessException {
// 2.connection 打開管道
connection.openPipeline();
// 3.connection 給本次管道內添加 要一次性執行的多條命令
for (int i = 0; i < number; ++i) {
connection.set(("B" + i).getBytes(), (i + "").getBytes());
}
// 4.關閉管道 不需要close 否則拿不到返回值
// connection.closePipeline();
// 這裏一定要返回null,最終pipeline的執行結果,纔會返回給最外層
return null;
}
});
Long start1 = System.currentTimeMillis();
System.out.println("---" + (start1 - end));
// 5.最後對redis pipeline管道操作返回結果進行判斷和業務補償
for (Object object : resultList) {
System.out.println(object);
}
return "test:" + (end - start) + ":" + (start1 - end);
}