博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
RedisTemplate读取slowlog
阅读量:7024 次
发布时间:2019-06-28

本文共 2099 字,大约阅读时间需要 6 分钟。

  hot3.png

本文主要研究一下如何使用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 slowlogs = redisTemplate.execute(new RedisCallback
>() { @Override public List doInRedis(RedisConnection connection) throws DataAccessException { System.out.println(connection.getClass()); RedisAsyncCommands redisAsyncCommands = (RedisAsyncCommands) connection.getNativeConnection(); RedisFuture
> future = redisAsyncCommands.slowlogGet(10); try { return future.get(); } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } return null; } }); List
result = slowlogs.stream() .map(e -> Slowlog.from(e)) .collect(Collectors.toList()); System.out.println(result); }
  • 这里使用lettuce的redisAsyncCommands的slowlogGet方法获取slowlog
  • 不过这里返回的是List<Object>,需要自己解析一下,具体详见下面的slowlog定义

slowlog

@Data@Builderpublic class Slowlog {    private long id;    private long timeStamp;    private long executionTime;    private List
args; @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。

doc

转载于:https://my.oschina.net/go4it/blog/2032452

你可能感兴趣的文章
关于消除超长的case列表的一个思路
查看>>
shell下root用户切换其他用户运行程序
查看>>
恢复Ext3下被删除的文件(转)
查看>>
Instagram 架构分析笔记(转)
查看>>
java http线程池
查看>>
java较全的面试题
查看>>
day3
查看>>
软件程序编码
查看>>
感觉好累
查看>>
使用ant制作hadoop1.1.2的eclipse插件(转载)
查看>>
Css的transform和transition
查看>>
POJ1386Play on Words(欧拉回路)
查看>>
configparser 文件的生成和读写
查看>>
20个PHP程序性能优化的方法
查看>>
关于游戏平衡性工作内容——王者荣耀英雄伤害附录
查看>>
47种常见的浏览器兼容性问题大汇总
查看>>
数据结构与算法预热--线性表是什么?
查看>>
Winform自定义控件实例
查看>>
Golang使用MongoDB通用操作
查看>>
Siebel NextRecord And DeleteRecord In Loops Skips Record
查看>>