You need to enable JavaScript to run this app.
导航
配置 Redis 数据源
最近更新时间:2024.09.25 11:24:10首次发布时间:2022.11.15 20:36:29

Redis 数据源为您提供读取和写入 Redis 数据的双向通道能力,实现不同数据源与 Redis 之间进行数据传输。
本文为您介绍 DataSail 的 Redis 数据同步的能力支持情况。

1 支持的 Redis 版本

  • 脚本模式(DSL)离线读:
    • 支持自建 Redis 单机部署模式。
  • 可视化离线读写:
    • 支持火山引擎云 NoSQL 数据库 Redis 社区版、Redis 企业版 7.X 版本。
    • 支持自建 Redis 单机部署模式。

2 使用限制

子账号新建数据源时,需要有项目的管理员角色,方可以进行新建数据源操作。各角色对应权限说明,详见:管理成员
为确保同步任务使用的独享集成资源组具有 Redis 数据库节点的网络访问能力,您需将独享集成资源组和 Redis 数据库节点网络打通,详见网络连通解决方案
如果您需要通过 VPC 网络访问 Redis 数据库,则独享集成资源组所在 VPC 中的 IPv4 CIDR 地址,需加入到 Redis 的访问白名单中:

  1. 确认集成资源组所在的 VPC:
    图片
  2. 查看 VPC 的 IPv4 CIDR 地址:

    注意

    若考虑安全因素,减少 IP CIDR 的访问范围,您至少需要将集成资源组绑定的子网下的 IPv4 CIDR 地址加入到数据库白名单中。

    图片
  3. 将获取到的 IPv4 CIDR 地址添加进 Redis 数据库白名单中。

如果您通过公网形式访问 Redis 数据库,则需进行以下操作:

  • 独享集成资源组开通公网访问能力,操作详见开通公网
  • 并将公网 IP 地址,添加进 Redis 数据库白名单中。

3 支持的字段类型

当前 Redis 数据源支持如下字段:

字段类型

离线读(Redis Reader)

离线写(Redis Writer)

String

支持

支持

Hash

支持

支持

Set

支持

支持

Sorted Set (别名Zset)

支持

支持

List

支持

不支持

4 数据同步任务开发

4.1 数据源注册

新建数据源操作详见配置数据源,下面为您介绍用不同方式来配置 Redis 数据源信息:

  1. 火山引擎 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 社区版或企业版实例名称信息。
    若您还未创建 Redis 实例,您可前往 Redis 实例控制台中创建,详见创建实例

    *用户名

    输入有权限访问数据库的用户名信息。

    *密码

    输入用户名对应的密码信息。

    Access Key ID

    进入火山引擎,访问控制台的密钥管理界面,复制 Accesskey ID 填写到此处。如果为子用户,请联系主账号获取密钥。

    Secret Access Key

    与 Access Key ID 配套使用,类似登录密码,用于签名您的访问参数,以防被篡改。

  2. 普通 Redis 数据源连接串方式
    其中参数名称前带 * 的为必填参数,名称前未带 * 的为可选填参数。

    参数

    说明

    基本配置

    *数据源类型

    Redis

    *接入方式

    连接串

    *数据源名称

    数据源的名称,可自行设置,仅支持中文,英文,数字,“_”,100个字符以内。

    参数配置

    *主机名或 IP 地址

    填写 Redis 数据库所在的主机名或 IP 地址信息。

    *端口

    用于访问 Redis 的端口信息,一般为6379。

    用户名

    输入有权限访问数据库的用户名信息。

    密码

    填写用于登录 Redis 的密码信息。

4.2 新建离线任务

Redis 数据源测试连通性成功后,进入到数据开发界面,开始新建 Redis 相关通道任务。
新建任务方式详见离线数据同步

4.3 可视化配置说明

任务创建成功后,您可根据实际场景,配置 Redis 离线读Redis 离线写通道任务。

4.3.1 Redis 离线读

图片
数据来源端选择 Redis,并完成以下相关参数配置:
其中参数名称前带 * 的为必填参数,名称前未带 * 的为可选填参数。

参数

说明

*数据源类型

下拉选择Redis数据源类型。

*数据源名称

已在数据源管理中注册成功的Redis数据源,下拉可选。
若还未建立相应数据源,可单击数据源管理按钮,前往创建Redis数据源。

4.3.2 Redis 离线写

图片
数据目标端选择 Redis,并完成以下相关参数配置:
其中参数名称前带 * 的为必填参数,名称前未带 * 的为可选填参数。

参数

说明

*目标类型

数据去向目标类型选择 Redis。

*数据源名称

已在数据源管理界面注册的 Redis 数据源,下拉可选。
若还未建立相应数据源,可单击数据源管理按钮,前往创建 Redis 数据源。

*数据保存时间

写入 Redis 数据时,为每条 key 设置过期时间,单位可以选择天或小时级,配置为 "0" 代表永久。

*写入字段类型

下拉选择写入 Redis Value 的数据类型,支持选择 string、set、hash、sorted_set 四种类型。

4.3.3 字段映射

字段为一一映射关系,即将源表字段信息,同步到同一行的目标字段信息中。选择好来源和目标数据源信息后,您可进行以下操作:

  • Redis离线读字段配置,默认有以下7个字段信息组成,暂不支持手动调整或删除:
    • key:Redis 中 key 内容数据。
    • type:支持数据格式类型 kv,set,list,map,zset。
    • expire:数据过期时间。
    • value:数据格式为 string 时,对应的数据内容。
    • values:数据格式为 set | list 时,对应的数据内容。
    • hash:数据格式为 hash 时,对应的数据内容。
    • zset:数据格式为 zset 时,对应的数据内容。
  • Redis 目标端字段映射配置,根据上面配置的写入字段类型,自动获取字段映射,不支持手动添加和删除。

4.4 DSL 配置说明

Redis 数据源支持使用脚本模式(DSL)的方式进行配置。
在某些复杂场景下,或当数据源类型暂不支持可视化配置时,您可通过任务脚本的方式,按照统一的 Json 格式,编写 Redis Reader 或 Redis Writer 参数脚本代码,来运行数据集成任务。

4.4.1 进入 DSL 模式

进入 DSL 模式操作流程,可详见 MySQL 数据源-4.4.1 进入DSL 模式

4.4.2 Redis Reader

根据实际情况替换 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,默认为:
com.bytedance.bitsail.connector.redis.source.RedisSource

*nodes

Redis 服务连接地址,填写形式为: hostname:port 或者 ip:port

auth

输入 Redis 服务安全认证密码。

*columns

Redis 读取的源表字段为固定结构,须按照文档配置,不可变更

[
    {
        "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>"
    }
]

4.4.3 Redis Writer

根据实际情况替换 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,默认为:
com.bytedance.dts.batch.redis.VolcRedisOutputFormat

ttl_type

设置 Redis Key 过期时间单位:

  • day:天级
  • hour:小时级
  • minute:分钟级

day

ttl

设置 Redis Key 过期时间,具体实现时会以 ttl * ttl_type 的形式,转换为对应秒数。

-1,永不过期

*redis_data_type

配置写入 Redis 的数据类型,支持以下四种数据类型:

  • string
  • hash
  • set
  • sorted_set

*columns

配置写入 Redis 的字段结构,写入字段映射须按照文档配置。
Redis 写入字段结构配置与 redis_data_type 字段类型对应:

  • string

    [
        {
            "upperCaseName":"KEY",
            "name":"key",
            "type":"string"
        },
        {
            "upperCaseName":"VALUE",
            "name":"value",
            "type":"string"
        }
    ]
    
  • hash

    [
        {
            "upperCaseName":"REDIS_KEY",
            "name":"redis_key",
            "type":"string"
        },
        {
            "upperCaseName":"HASH_KEY",
            "name":"hash_key",
            "type":"string"
        },
        {
            "upperCaseName":"VALUE",
            "name":"value",
            "type":"string"
        }
    ]
    
  • set

    [
        {
            "upperCaseName":"KEY",
            "name":"key",
            "type":"string"
        },
        {
            "upperCaseName":"VALUE",
            "name":"value",
            "type":"string"
        }
    ]
    
  • sorted_set

    [
        {
            "upperCaseName":"REDIS_KEY",
            "name":"redis_key",
            "type":"string"
        },
        {
            "upperCaseName":"SCORE",
            "name":"score",
            "type":"string"
        },
        {
            "upperCaseName":"VALUE",
            "name":"value",
            "type":"string"
        }
    ]
    

5 高级参数说明

  • 对于可视化通道任务,写参数需要加上 job.writer. 前缀,如下图所示:
    图片
  • 对于 DSL 任务,读参数请配置到 reader.parameter 下,写参数请配置到 writer.parameter 下,直接输入参数名称和参数值。如下图所示:
    图片

5.1 Redis 离线读

参数名

描述

默认值

key_pattens

读取 Redis keys 的匹配策略,默认为*,即读取所有的 key。
支持精确匹配和模糊匹配:

  • 精确匹配:比如只同步user_auser_b的 key,填写user_a,user_b即可;
  • 模糊匹配:比如只同步前缀是user_info的 key,填写 user_info*即可。

*

db_index

Redis 逻辑库索引号,默认为 0。如果您的数据位于 Redis 的其他 DB,比如在 DB 6 中,则填写6即可。

0

reader_parallelism_num

读取 Redis 分片数,Redis 服务为单线程模型,推荐设置为 1,默认为 1。

1

client_timeout_ms

创建 Redis 连接的超时时间,单位为毫秒(ms)。

60000

max_attempt_count

执行单次 Redis Command 失败的最大重试次数

3

5.2 Redis 离线写

参数名

描述

默认值

write_batch_interval

一次性批量提交的数据条数,该值可以减少与 Redis 网络的交互次数并提升整体吞吐量。但如果该值设置过大可能会导致数据同步进程 OOM。

50