写入redis

resultStream.addSink(new RedisSink(FlinkUtils.getRedisSinkConfig(parameters),new MyRedisMapper()));

getRedisSinkConfig

 public static FlinkJedisSentinelConfig getRedisSinkConfig(ParameterTool parameterTool){

        String redisHosts = parameterTool.get(PropertiesUtil.REDIS_HOSTS);
Set<String> hosts = new HashSet<String>(Arrays.asList(redisHosts.split(",")));
FlinkJedisSentinelConfig redisProduceConfig = new FlinkJedisSentinelConfig.Builder()
.setSentinels(hosts)
.setMasterName(parameterTool.get(PropertiesUtil.REDIS_MASTER))
.setPassword(parameterTool.get(PropertiesUtil.REDIS_PASSWORD))
.setMaxIdle(parameterTool.getInt(PropertiesUtil.REDIS_POOL_MAXIDEL))
.setMaxTotal(parameterTool.getInt(PropertiesUtil.REDIS_POOL_MAXTOTAL))
.setConnectionTimeout(parameterTool.getInt(PropertiesUtil.REDIS_TIMEOUT)).build();
return redisProduceConfig; }

MyRedisMapper

import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.streaming.connectors.redis.common.mapper.RedisCommand;
import org.apache.flink.streaming.connectors.redis.common.mapper.RedisCommandDescription;
import org.apache.flink.streaming.connectors.redis.common.mapper.RedisMapper; /**
* @Auther WeiJiQian
* @描述 Redis 存储的key和value
*/
public class MyRedisMapper implements RedisMapper<Tuple2<String, String>> { /**
* 设置使用的redis数据结构类型,和key的名词
* 通过RedisCommand设置数据结构类型
* Returns descriptor which defines data type.
*
* @return data type descriptor
*/
@Override
public RedisCommandDescription getCommandDescription() {
return new RedisCommandDescription(RedisCommand.SETEX, Constant.REDIS_KEY_TTL);
} /**
* 设置value中的键值对 key的值
* Extracts key from data.
*
* @return key
*/
@Override
public String getKeyFromData(Tuple2<String, String> stringStringTuple2) {
return stringStringTuple2.f0;
} /**
* 设置value中的键值对 value的值
* Extracts value from data.
*
* @return value
*/
@Override
public String getValueFromData(Tuple2<String, String> tuple2) {
return tuple2.f1;
} }

flink连接器-流处理-读写redis的更多相关文章

  1. Flink读写Redis(三)-读取redis数据

    自定义flink的RedisSource,实现从redis中读取数据,这里借鉴了flink-connector-redis_2.11的实现逻辑,实现对redis读取的逻辑封装,flink-connec ...

  2. flinksql读写redis

    0.前言 最近有个需求,需要使用flinksql读写redis,由于官网上并没有redis的connector,在网上找了很久,开源的几个connector又没法满足要求,所有这里就自己动手实现了一个 ...

  3. 字符串流sstream[part2/使用同一个字符串流反复读写数据]

    stringstream构造函数会特别消耗内存,似乎不打算主动释放内存(或许是为了提高效率),如果你要在程序中使用同一个流反复读写大量数据,将会造成大量的内部消耗,因此建议:    1:调用clear ...

  4. 重新想象 Windows 8 Store Apps (23) - 文件系统: 文本的读写, 二进制的读写, 流的读写, 最近访问列表和未来访问列表

    原文:重新想象 Windows 8 Store Apps (23) - 文件系统: 文本的读写, 二进制的读写, 流的读写, 最近访问列表和未来访问列表 [源码下载] 重新想象 Windows 8 S ...

  5. Flink在流处理上常见的Source和sink操作

    flink在流处理上的source和在批处理上的source基本一致.大致有4大类 1.基于本地集合的source(Collection-based-source) 2.基于文件的source(Fil ...

  6. flink的流处理特性

    flink的流处理特性: 支持高吞吐.低延迟.高性能的流处理 支持带有事件时间的窗口(Window)操作 支持有状态计算的Exactly-once语义 支持高度灵活的窗口(Window)操作,支持基于 ...

  7. C# 读写redis C#读写实时数据库

    本文将使用一个gitHub开源的组件技术来读写redis数据,使用的是基于以太网的TCP/IP实现,不需要额外的组件,读取操作只要放到后台线程就不会卡死线程,本组件支持超级方便的高性能读写操作 git ...

  8. windows服务 MVC之@Html.Raw()用法 文件流的读写 简单工厂和工厂模式对比

    windows服务   public partial class Service1 : ServiceBase{ System.Threading.Timer recordTimer;public S ...

  9. Plink v0.1.0 发布——基于Flink的流处理平台

    Plink是一个基于Flink的流处理平台,旨在基于 [Apache Flink]封装构建上层平台. 提供常见的作业管理功能.如作业的创建,删除,编辑,更新,保存,启动,停止,重启,管理,多作业模板配 ...

随机推荐

  1. 分析 5种分布式事务方案,还是选了阿里的 Seata(原理 + 实战)

    好长时间没发文了,最近着实是有点忙,当爹的第 43 天,身心疲惫.这又赶上年底,公司冲 KPI 强制技术部加班到十点,晚上孩子隔两三个小时一醒,基本没睡囫囵觉的机会,天天处于迷糊的状态,孩子还时不时起 ...

  2. Forethought Future Cup - Final Round (Onsite Finalists Only) C. Thanos Nim 题解(博弈+思维)

    题目链接 题目大意 给你n堆石子(n为偶数),两个人玩游戏,每次选取n/2堆不为0的石子,然后从这n/2堆石子中丢掉一些石子(每一堆丢弃的石子数量可以不一样,但不能为0),若这次操作中没有n/2堆不为 ...

  3. TIOBE 11月指数:C语言居首,稳居宝座,Python直逼第二!

    官方网址:https://www.tiobe.com/tiobe-index/   ​ 这是自近20年前TIOBE指数开始以来,Java和C第一次不再占据前两位.C仍然是第一位的,但是现在第二个位置是 ...

  4. LeetCode 035 Search Insert Position

    题目要求:Search Insert Position Given a sorted array and a target value, return the index if the target ...

  5. nginx,wsgi项目部署

    1.一些重要概念 https://www.cnblogs.com/xiaonq/p/8932266.html 1.1web容器 什么是web容器 1.web容器是帮助我们部署java丶php丶pyth ...

  6. 【C++】“反转链表”相关的题目

    1.反转链表:定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点. (1)这道题是经典的题目了,用迭代的方式解决也是很容易的,代码量也不大.分享一个我个人做题的方式,我会先在题目开 ...

  7. PyQt+moviepy音视频剪辑实战2:一个剪裁视频文件精华内容留存工具的实现

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 PyQt+moviepy音视频剪辑实战 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一.引言 ...

  8. mysql-installer-web-community和mysql-installer-communityl两个版本的区别

    mysql的官网上提供了两个mysql共享版本的安装,一个20M,一个373.4M.二者的区别是前者是联网安装,当安装时必须能访问互联网,后者是离线安装使用的,一般建议下载离线安装使用的版本. 学Py ...

  9. 转:Python常见字符编码及其之间的转换

    参考:Python常见字符编码 + Python常见字符编码间的转换 一.Python常见字符编码 字符编码的常用种类介绍 第一种:ASCII码 ASCII(American Standard Cod ...

  10. Asp.NetCore之AutoMapper进阶篇

    应用场景 在上一篇文章--Asp.NetCore之AutoMapper基础篇中我们简单介绍了一些AutoMapper的基础用法以及如何在.NetCore中实现快速开发.我相信用过AutoMapper实 ...