Redis 数据源为您提供读取和写入 Redis 数据的双向通道能力,实现不同数据源与 Redis 之间进行数据传输。
本文为您介绍 DataSail 的 Redis 数据同步的能力支持情况。
子账号新建数据源时,需要有项目的管理员角色,方可以进行新建数据源操作。各角色对应权限说明,详见:管理成员。
为确保同步任务使用的独享集成资源组具有 Redis 数据库节点的网络访问能力,您需将独享集成资源组和 Redis 数据库节点网络打通,详见网络连通解决方案。
如果您需要通过 VPC 网络访问 Redis 数据库,则独享集成资源组所在 VPC 中的 IPv4 CIDR 地址,需加入到 Redis 的访问白名单中:
注意
若考虑安全因素,减少 IP CIDR 的访问范围,您至少需要将集成资源组绑定的子网下的 IPv4 CIDR 地址加入到数据库白名单中。
如果您通过公网形式访问 Redis 数据库,则需进行以下操作:
当前 Redis 数据源支持如下字段:
字段类型 | 离线读(Redis Reader) | 离线写(Redis Writer) |
---|---|---|
String | 支持 | 支持 |
Hash | 支持 | 支持 |
Set | 支持 | 支持 |
Sorted Set (别名Zset) | 支持 | 支持 |
List | 支持 | 不支持 |
新建数据源操作详见配置数据源,下面为您介绍用不同方式来配置 Redis 数据源信息:
火山引擎 Redis 数据源方式
其中参数名称前带 * 的为必填参数,名称前未带 * 的为可选填参数。
说明
数据源接入方式为火山引擎企业版 Redis,且配置 Access Key ID、Secret Access Key 参数时,此时离线读取 Redis,会调用 Redis 服务,通过 Dump 模式,来读取解析 Redis 的 RDB 文件,将数据传入目标端。
若不配置 Access Key ID、Secret Access Key 参数时,您读取 Redis 数据之前,需要先通过提工单的方式,请 Redis 同学进行实例参数修改,开放 Keys 命令,来直接读取企业版的 Redis 数据。
参数 | 说明 |
---|---|
基本配置 | |
*数据源类型 | Redis |
*接入方式 | 火山引擎 Redis |
*数据源名称 | 数据源的名称,可自行设置,仅支持中文,英文,数字,“_”,100个字符以内。 |
参数配置 | |
*Redis 实例 ID | 下拉选择已在火山引擎 NoSQL 数据库中创建的 Redis 社区版或企业版实例名称信息。 |
*用户名 | 输入有权限访问数据库的用户名信息。 |
*密码 | 输入用户名对应的密码信息。 |
Access Key ID | 进入火山引擎,访问控制台的密钥管理界面,复制 Accesskey ID 填写到此处。如果为子用户,请联系主账号获取密钥。 |
Secret Access Key | 与 Access Key ID 配套使用,类似登录密码,用于签名您的访问参数,以防被篡改。 |
普通 Redis 数据源连接串方式
其中参数名称前带 * 的为必填参数,名称前未带 * 的为可选填参数。
参数 | 说明 |
---|---|
基本配置 | |
*数据源类型 | Redis |
*接入方式 | 连接串 |
*数据源名称 | 数据源的名称,可自行设置,仅支持中文,英文,数字,“_”,100个字符以内。 |
参数配置 | |
*主机名或 IP 地址 | 填写 Redis 数据库所在的主机名或 IP 地址信息。 |
*端口 | 用于访问 Redis 的端口信息,一般为6379。 |
用户名 | 输入有权限访问数据库的用户名信息。 |
密码 | 填写用于登录 Redis 的密码信息。 |
Redis 数据源测试连通性成功后,进入到数据开发界面,开始新建 Redis 相关通道任务。
新建任务方式详见离线数据同步。
任务创建成功后,您可根据实际场景,配置 Redis 离线读 或 Redis 离线写通道任务。
数据来源端选择 Redis,并完成以下相关参数配置:
其中参数名称前带 * 的为必填参数,名称前未带 * 的为可选填参数。
参数 | 说明 |
---|---|
*数据源类型 | 下拉选择Redis数据源类型。 |
*数据源名称 | 已在数据源管理中注册成功的Redis数据源,下拉可选。 |
数据目标端选择 Redis,并完成以下相关参数配置:
其中参数名称前带 * 的为必填参数,名称前未带 * 的为可选填参数。
参数 | 说明 |
---|---|
*目标类型 | 数据去向目标类型选择 Redis。 |
*数据源名称 | 已在数据源管理界面注册的 Redis 数据源,下拉可选。 |
*数据保存时间 | 写入 Redis 数据时,为每条 key 设置过期时间,单位可以选择天或小时级,配置为 "0" 代表永久。 |
*写入字段类型 | 下拉选择写入 Redis Value 的数据类型,支持选择 string、set、hash、sorted_set 四种类型。 |
字段为一一映射关系,即将源表字段信息,同步到同一行的目标字段信息中。选择好来源和目标数据源信息后,您可进行以下操作:
Redis 数据源支持使用脚本模式(DSL)的方式进行配置。
在某些复杂场景下,或当数据源类型暂不支持可视化配置时,您可通过任务脚本的方式,按照统一的 Json 格式,编写 Redis Reader 或 Redis Writer 参数脚本代码,来运行数据集成任务。
进入 DSL 模式操作流程,可详见 MySQL 数据源-4.4.1 进入DSL 模式。
根据实际情况替换 Redis Reader 相应参数,Redis Reader 脚本示例如下:
// 变量使用规则如下: // 1.自定义参数变量: {{}}, 比如{{number}} // 2.系统时间变量${}, 比如 ${date}、${hour} // ************************************** { // [required] dsl version, suggest to use latest version "version": "0.2", // [required] execution mode, supoort streaming / batch now "type": "batch", // reader config "reader": { // [required] datasource type "type": "redis", // [optional] datasource id, set it if you have registered datasource "datasource_id": 12345, // [required] user parameter "parameter": { // ********** please write here ********** // "key" : value "class":"com.bytedance.bitsail.connector.redis.source.RedisSource", "nodes":"xxx.xx.xx.xx:xx", "auth":"xxxxxxxxx", "columns": [ { "upperCaseName":"KEY", "name":"key", "type":"string" }, { "upperCaseName":"TYPE", "name":"type", "type":"string" }, { "upperCaseName":"EXPIRE", "name":"expire", "type":"bigint" }, { "upperCaseName":"VALUE", "name":"value", "type":"string" }, { "upperCaseName":"VALUES", "name":"values", "type":"array<string>" }, { "upperCaseName":"HASH", "name":"hash", "type":"MAP<string,string>" }, { "upperCaseName":"ZSET", "name":"zset", "type":"MAP<string,string>" } ] }, // writer config "writer": { }, // common config "common": { // [required] user parameter "parameter": { // ********** please write here ********** // "key" : value } } }
Reader 参数说明,其中参数名称前带 * 的为必填参数,名称前未带 * 的为可选填参数:
参数名 | 描述 | 默认值 |
---|---|---|
*type | 数据源类型,对应 Redis 类型,默认填写为:redis | 无 |
*datasource_id | 注册的 Redis 数据源 ID,可以在项目控制台 > 数据源管理界面中查找。 | 无 |
*class | 配置 Redis 读取的 ClassName,默认为: | 无 |
*nodes | Redis 服务连接地址,填写形式为: | 无 |
auth | 输入 Redis 服务安全认证密码。 | 无 |
*columns | Redis 读取的源表字段为固定结构,须按照文档配置,不可变更
| 无 |
根据实际情况替换 Redis Writer 相应参数,Redis Writer 脚本示例如下:
// ************************************** // 变量使用规则如下: // 1.自定义参数变量: {{}}, 比如{{number}} // 2.系统时间变量${}, 比如 ${date}、${hour} // ************************************** { // [required] dsl version, suggest to use latest version "version": "0.2", // [required] execution mode, supoort streaming / batch now "type": "batch", // reader config "reader": { // [required] datasource type "type": "xx", // [optional] datasource id, set it if you have registered datasource "datasource_id": null, // [required] user parameter "parameter": { // ********** please write here ********** // "key" : value } }, // writer config "writer": { // [required] datasource type "type": "redis", // [optional] datasource id, set it if you have registered datasource "datasource_id": 12345, // [required] user parameter "parameter": { // ********** please write here ********** // "key" : value "class":"com.bytedance.dts.batch.redis.VolcRedisOutputFormat", "ttl_type": "DAY", "ttl": -1, "redis_data_type":"string", "columns": [ { "name": "name_sample", "type": "type_sample" } ] } }, // common config "common": { // [required] user parameter "parameter": { // ********** please write here ********** // "key" : value } } }
Writer 参数说明,其中参数名称前带 * 的为必填参数,名称前未带 * 的为可选填参数:
参数名 | 描述 | 默认值 |
---|---|---|
*type | 数据源类型,对应 Redis 类型,默认填写为:redis | 无 |
*datasource_id | 注册的 Redis 数据源 ID,可以在项目控制台 > 数据源管理界面中查找。 | 无 |
*class | 配置 Redis 写入的 ClassName,默认为: | 无 |
ttl_type | 设置 Redis Key 过期时间单位:
| day |
ttl | 设置 Redis Key 过期时间,具体实现时会以 ttl * ttl_type 的形式,转换为对应秒数。 | -1,永不过期 |
*redis_data_type | 配置写入 Redis 的数据类型,支持以下四种数据类型:
| 无 |
*columns | 配置写入 Redis 的字段结构,写入字段映射须按照文档配置。
| 无 |
job.reader.
,写参数需要加上 job.writer.
前缀,如下图所示:reader.parameter
下,写参数请配置到 writer.parameter
下,直接输入参数名称和参数值。如下图所示:参数名 | 描述 | 默认值 |
---|---|---|
job.reader.key_pattens | 读取 Redis keys 的匹配策略,默认为
| * |
job.reader.db_index | Redis 逻辑库索引号,默认为 0。如果您的数据位于 Redis 的其他 DB,比如在 DB 6 中,则填写 | 0 |
job.reader.reader_parallelism_num | 读取 Redis 分片数,Redis 服务为单线程模型,推荐设置为 1,默认为 1。 | 1 |
job.reader.client_timeout_ms | 创建 Redis 连接的超时时间,单位为毫秒(ms)。 | 60000 |
job.reader.max_attempt_count | 执行单次 Redis Command 失败的最大重试次数 | 3 |
参数名 | 描述 | 默认值 |
---|---|---|
job.writer.write_batch_interval | 一次性批量提交的数据条数,该值可以减少与 Redis 网络的交互次数并提升整体吞吐量。但如果该值设置过大可能会导致数据同步进程 OOM。 | 50 |