Flink的Redis sink实时流实现

302 阅读1分钟

如何在Linux安装redis,可以参考我的这篇文章:CentOS7安装redis5.0.9&简明教程 - 掘金 (juejin.cn) 打开flink官网,我们找下flink redissink的依赖。我安装的flink版本是1.13.1

image.png

image.png

image.png

pom文件:

<dependency>
  <groupId>org.apache.bahir</groupId>
  <artifactId>flink-connector-redis_2.11</artifactId>
  <version>1.1-SNAPSHOT</version>
</dependency>

将pom文件加入到idea中

代码实现:

package com.nmu.stream.union.redis

import org.apache.flink.streaming.api.scala.StreamExecutionEnvironment
import org.apache.flink.streaming.connectors.redis.RedisSink
import org.apache.flink.streaming.connectors.redis.common.config.FlinkJedisPoolConfig

object StreamRedisSinkScala {
  def main(args: Array[String]): Unit = {
    val env = StreamExecutionEnvironment.getExecutionEnvironment
    val text = env.socketTextStream("bigdata01",9001)
    import org.apache.flink.api.scala._
    //组装数据,这里组装的是tuple2类型
    //第一个元素是指list队列的key名称
    //第二个元素是指需要向list队列中添加的元素
    val listData = text.map(word => ("l_words_scala", word))
    //指定redissink
    val conf = new FlinkJedisPoolConfig.Builder().setHost("172.23.74.131").setPort(6379).build()
    val redisSink = new RedisSink[(String, String)](conf, new MyRedisMapper)
    listData.addSink(redisSink)

    env.execute("StreamRedisSinkScala")

  }

}

里面那个setHost("172.23.74.131")填写的是本地ip。本地ip是打开cmd是win+r,输入cmd,然后再输入ipconfig /all

image.png 在window安装redis,在网上搜安装包,直接解压就行

image.png

检查有没有redis.conf文件,没有的话要添加一下。
参考我的redis.conf文件配置: Redis-x64-3.0.504的redis.conf内容 - 掘金 (juejin.cn)
然后点击redis-server.exe image.png 打开xshell,实现监听

[root@bigdata01 softwares]# nc -l -p 9001 #监听端口9001

再点击redis-cli.exe,输入monitor

image.png

代码运行:

image.png 一些监听效果:

image.png 再打开redis-cli.exe输入lrange l_words_scala 0 -1可以显示库中的内容。