一、Redis 离线单表写入节点配置
| 参数 | 说明 |
| 数据去向 | 选择当前项目中可用的 Redis 数据源。 |
| 库 | 支持选择、或者手动输入需写入的库名称默认将 Redis 生成的0 – 15数据库作为默认库。当数据源网络不联通导致无法直接拉取库信息时,可手动输入数据库名称。在数据集成网络连通的情况下,仍可进行数据同步。 |
| 数据类型 | Redis 写入 Redis 的 value 类型包含以下5种:字符串(string)字符串列表(list)字符串集合(set)有序字符串集合(zset)哈希(hash)不同的 value 类型,数据类型配置会略有差异。 |
| 写入方式 | 根据写入类型自动填入对应的写入方式。 |
| 键分隔符 | Redis 写入的键分隔符,需要你保证与创建的 Redis 表的字段分隔符一致,否则无法在 Redis 表中查到数据。可选:' \\t ' 、' \\u001 ' 、' | '、' 空格 ' 、 ' ;' ' , '。 |
| 值分隔符 | Redis 写入的值分隔符,需要你保证与创建的 Redis 表的值分隔符一致,否则无法在 Redis 表中查到数据。可选:' \\t ' 、' \\u001 ' 、' | '、' 空格 ' 、 ' ;' ' , '。 |
| 缓存失效类型 | 支持三种失效类型:永久有效:key 值不设定失效时间,永久有效。固定失效时长:数据以分批实际写入时间为起点,经过固定设置时间长度后失效。统一到期时间:所有写入数据均在指定时间一起失效。 |
| 批量提交条数 | 一次性批量提交的记录数大小,该值可以极大减少数据同步系统与 Redis 的网络交互次数,并提升整体吞吐量。如果该值设置过大,会导致数据同步运行进程 OOM 异常。 |
| 高级设置(选填) | 可根据业务需求配置参数。 |
二、数据类型
| value 类型 | type 参数(必选) | mode 参数(必选) | valueFieldDelimiter 参数(非必选) | writeMode 配置样例 |
| 字符串(string) | type 需配置为 string。 | mode 为写入模式参数,value 为字符串(string)时:mode 需配置为set。如果需存储的数据已经存在,则覆盖原有的数据。 | valueFieldDelimiter为 value 之间的分隔符,默认值为 \\u0001。该配置项主要用于源数据每行超过两列的情况,例如有三列时,各列通过分隔符分割样例为value1\\u0001value2\\u0001value3。如果源数据只有两列(即 key 和 value)时,则无需配置。 | "writeMode":{ "type": "string", "mode": "set", "valueFieldDelimiter": "\\u0001" } |
| | 字符串列表(list) | type 需配置为 list。 | mode 为写入模式参数,value 为字符串列表(list)时,可配置为:lpush,表示在 list 最左边存储数据。rpush,表示在 list 最右边存储数据。 | "writeMode":{ "type": "list", "mode": "lpush|rpush", "valueFieldDelimiter": "\\u0001" } |
| | 字符串集合(set) | type 需配置为 set。 | mode 为写入模式参数,value 为字符串集合(set)时:mode 需配置为 sadd,表示向 set 集合中存储数据。如果需存储的数据已经存在,则覆盖原有的数据。 | "writeMode":{ "type": "set", "mode": "sadd", "valueFieldDelimiter": "\\u0001" } |
| 有序字符串集合(zset) | type 需配置为 zset。 | mode 为写入模式参数,value 为有序字符串集合(zset)时:mode 需配置为 zadd,表示向 zset 有序集合中存储数据。如果需存储的数据已经存在,则覆盖原有的数据。 | 无需配置此参数。 | "writeMode":{ "type": "zset", "mode": "zadd" }当 value 类型为 zset 时,数据源的每行记录均需遵循相应的规范。即每行记录除 key 外,只能有1对 score 和 value,并且 score 必须在 value 前面,Redis Writer 方可解析出 column 对应的是score 或 value。 |
| 哈希(hash) | type 需配置为 hash。 | mode 为写入模式参数,value 为哈希(hash)时:mode 需配置为 hset,表示向 hash 有序集合中存储数据。如果需存储的数据已经存在,则覆盖原有的数据。 | 无需配置此参数。 | "writeMode":{ "type": "hash", "mode": "hset" } 当 value 类型为 hash 时,数据源的每行记录都需遵循相应的规范。即每行记录除 key外,只能有1对 attribute 和 value,并且 attribute 必须在 value 前面,Redis Writer 方可解析出 column 对应的是 attribute 或 value。 |
三、Redis 脚本 Demo
如果你配置离线任务时,使用脚本模式的方式进行配置,你需要在任务脚本中,按照脚本的统一格式要求编写脚本中的 writer 参数。(Redis 仅支持 writer)
"job": { "content": [ { "writer": { "parameter": { "valueIndexes": [ 1 ], "password": "******", "database": "1", //目标槽 "expireTime": { //缓存失效时间 "unixtime": 0, "seconds": 300 }, "port": 6379, "keyFieldDelimiter": "|", //键分割符 "host": "******", "writeMode": { "mode": "set", //写入方式 "valueFieldDelimiter": ",", //值分割符 "type": "string" //数据类型 }, "batchSize": 1000, //批量提交大小 "keyIndexes": [ 0 ], "username": "" }, "name": "rediswriter" } } ], "setting": { "errorLimit": { //脏数据阈值 "record": 0 }, "speed": { "byte": -1, //不限制同步速度,正整数表示设置最大传输速度 byte/s "channel": 1 //并发数量 } }}