强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan
【前言】
今天在优化通知平台的路由部分时发现每次当路由初始化到Redis时异常慢,早就听闻Pipeline是redis批量操作的利器,正好这次用Pipeline进行优化;
【整合Redis实战】
一、原理分析
1、单个命令操作
2、Pipeline批量操作
二、相关代码
//批量操作
@RequestMapping(value = "/add/pipeline", method = RequestMethod.GET)
public void addPipeline() {
strRedisTemplate.executePipelined(new RedisCallback<String>() {
@Override
public String doInRedis(RedisConnection connection) throws DataAccessException {
for (int i = 0; i < 100; i++) {
connection.set(("pipel:" + i).getBytes(), "123".getBytes());
}
return null;
}
});
}
//单个操作
@RequestMapping(value = "/add/single", method = RequestMethod.GET)
public void addSingle() {
for (int i = 0; i < 100; i++) {
strRedisTemplate.opsForValue().set("single:" + i, "123");
}
}
三、效果对比
1、单个命令操作(100次与Redis服务端交互)---多次测试平均值
2、Pipeline命令操作耗时(1次与Redis服务端的交互)---多次测试的平均值
3、实现相同的效果:Redis存储100个Key
4、性能提升了 41066/336=122倍 (具体和系统代码与Redis服务器间的网络快慢有关,一般网络越差,操作的Redis的个数越多效果越明显)
五、项目地址及代码版本
1、地址:https://github.com/dangnianchuntian/springboot
2、代码版本:1.0.0-Release
【总结】
1、不断发现系统中的隐藏性能问题,去优化,快速提升的有效的路径;
2、不断积累,扩展知识面,才能发现更多更深层次的问题。