概述
Redis作为一个开源免费,高性能的kv数据库,官方称号称能够达到10w+的读写速度;本文讲解Redis如何与kettle结合,看看能够擦出什么火花~~
Redis版本:3.2.100
Kett版本:5.4
1、启动redis-server
redis-server redis.windows.conf
2、写入测试数据:
使用redis命令行工具写入一条测试数据:
Redis-cli.exe
Set k1 TestRedisGetFunction
3、添加jedis基础包
默认etl不支持redis调用,需要将jedis-3.1.0.jar包到${etl_root}\lib目录下;
4、新建转换
5、编写步骤1:生成记录
此步骤用于生成一条提示信息:
6、编写步骤2:java代码
import redis.clients.jedis.Jedis;
private Jedis jedis=null;
public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException
{
if (first){
first = false;
/*connect to redis server*/
//连接本地的 Redis 服务
jedis = new Jedis("localhost");
logBasic("Connection to server sucessfully");
//查看服务是否运行
logBasic("Server is running: "+jedis.ping());
}
Object[] r = getRow();
if (r == null) {
setOutputDone();
return false;
}
r = createOutputRow(r, data.outputRowMeta.size());
String v=jedis.get("k1");
// Set a value in a new output field
get(Fields.Out, "k1").setValue(r, v);
// Send the row on to the next step.
putRow(data.outputRowMeta, r);
return true;
}
然后在下面的字段列表中,将值k1输出:
7、编写步骤3:写日志
为了能够看到输出,将结果输出到日志中:
8、测试代码执行结果
好了,点击开始执行代码,运行结果如下:
9、基准性能测试
官方给出的性能在10w+,下面是我在笔记本上的测试结果,平均约为1.7w+,如果在服务器上测试,结果约为这个的2倍性能。
未完待续
后期计划使用Redis作字典转换服务,减少数据源与目标的数据转换的耦合度。。。