序
本文主要研究一下如何使用RedisTemplate(lettuce类库
)读取slowlog
maven
org.springframework.boot spring-boot-starter-data-redis org.apache.commons commons-pool2 2.4.3
redisAsyncCommands.slowlogGet
@Test public void testGetSlowlog(){ List
- 这里使用lettuce的redisAsyncCommands的slowlogGet方法获取slowlog
- 不过这里返回的是List<Object>,需要自己解析一下,具体详见下面的slowlog定义
slowlog
@Data@Builderpublic class Slowlog { private long id; private long timeStamp; private long executionTime; private Listargs; @Tolerate public Slowlog() { } public static Slowlog from(Object object){ List data = (List)object; List args = (List ) data.get(3); Slowlog slowlog = Slowlog.builder() .id(Long.parseLong(data.get(0).toString())) .timeStamp(Long.parseLong(data.get(1).toString())) .executionTime(Long.parseLong(data.get(2).toString())) .args(args.stream().map(e -> new String(e)).collect(Collectors.toList())) .build(); return slowlog; }}
- 这里定义了slowlog的属性,其中还定义了从lettuce接口返回的Object的解析
小结
redisTemplate并没有提供现成的api来获取slowlog,因此需要通过execute方法获取底层的client实现,然后执行相关的操作来获取slowlog。