本文介绍了 DataSail Redis Connector 的高级参数配置,内容涵盖适用场景、推荐配置与调优建议等,可以帮助您实现高效、稳定的数据同步。
job.reader.*) 参数 | 默认值 | 说明 |
|---|---|---|
| 无 | 框架固定为 Redis Source 实现类,一般不需要用户调整。 |
| 无 | 定义读取输出 schema;默认模式会强校验 7 列类型。 |
| 自动估算 | 显式指定 Source 并行度;一般在性能/稳定性调优时使用。 |
|
| 跳过 schema 校验;常与 |
|
| 选择 single / cluster;直接决定是否可用 pipeline 读等能力。 |
| 无 | Redis 节点地址(cluster 通常配置多个)。 |
| 无 | Redis 6+ ACL 用户名;不配则不设置。 |
| 无 | Redis 密码 / ACL password;不配则不设置。 |
|
| standalone 选择 DB;cluster 下通常无 DB 概念。 |
|
| key 匹配 pattern 列表(逗号分隔),注意拼写是 pattens。 |
|
| key 获取模式: |
|
| SCAN 的 COUNT hint;影响扫描吞吐与 Redis 压力。 |
|
| 当前仅支持 default;其他值会导致作业失败。 |
|
| Jedis 连接/读超时;过小会放大失败重试,过大延迟更高。 |
|
| 读侧连接池最大连接数;通常需要随并行度一起评估。 |
|
| 读侧连接池最大空闲连接数;偏向稳定性配置。 |
|
| 读侧连接池最小空闲连接数;偏向连接复用与冷启动耗时权衡。 |
|
| pool 获取连接最大等待;过小易报连接不足,过大易堆积延迟。 |
|
| 读侧重试次数;用于吸收短暂抖动,但会增加整体延迟。 |
|
| 拆平复杂类型输出;更灵活但可能更占网络/内存。 |
|
| 启用并行 key 扫描 + 分配;会间接启用 pipeline 读(仅 single 支持)。 |
|
| 启用 pipeline 读提升吞吐(仅 single 支持)。 |
|
| pipeline 读每批 key 数;越大吞吐越高但内存峰值更高。 |
|
| pipeline 多线程读线程数;仅 pipeline 模式生效。 |
|
| 无 split 时 sleep 等待;用于降低空转与调度开销。 |
|
| flat 模式下对 set/hash/zset 的 scan/chunk size;影响读放大。 |
job.reader.classjob.reader.class 通常是框架固定项,除非明确知道要切换 Source 实现,否则保持默认即可。
job.reader.columnsenable_flat_value=true(拆平输出),通常需要同步开启 skip_schema_validation=true。job.reader.skip_schema_validation、job.reader.enable_flat_value 强联动。job.reader.columns 决定了 Redis Source 的输出结构,默认会校验 7 列类型,配置时优先按默认 schema 来,只有在需要“拆平输出”时才考虑绕过校验。
job.reader.reader_parallelism_numread_mode=all(KEYS)时。connection_pool_*、client_timeout_ms、max_attempt_count。redis_parallel_read=true 场景,并行度会影响 split 分配与扫描成本。job.reader.reader_parallelism_num 是“控并发”的抓手:调大通常提升吞吐但会增加 Redis 压力,调小更稳但可能变慢。
job.reader.skip_schema_validationfalse。enable_flat_value=true 或者需要临时绕过严格校验以做排障验证。false。true,并确保下游能够消费你定义的字段类型。job.reader.enable_flat_value 强联动。skip_schema_validation 是“放宽约束”的开关,建议只在拆平输出或排障时打开,平时保持默认更稳。
job.reader.deploy_modesingle / cluster。single。cluster,并在 nodes 里配置多个节点。single 下启用。deploy_mode=cluster 时,redis_pipeline_read=true 或 redis_parallel_read=true 会导致作业失败(常见报错关键字类似:pipeline read is only supported in SINGLE deploy mode)。nodes 配置方式强联动。deploy_mode=single。Cluster 场景建议关闭 redis_pipeline_read 与 redis_parallel_read,并通过并行度/scan 等手段调优。deploy_mode 决定了连接器走 single 还是 cluster 客户端路径,并直接决定 pipeline 读是否可用;cluster 场景务必关闭 pipeline/parallel 读。
job.reader.nodesip:port[,ip2:port2]。deploy_mode 强联动。nodes 是 Redis Source 的连接入口,single 配一个即可,cluster 建议多配几个节点以增强稳定性。
job.reader.userjob.reader.auth 配套使用。启用 ACL 的 Redis 建议同时配置 job.reader.user 与 job.reader.auth;否则保持为空即可。
job.reader.authjob.reader.user 常成对出现(ACL)。job.reader.auth 用于认证,配不配取决于你的 Redis 是否开启密码/ACL。
job.reader.db_index0。单机 Redis 用多 DB 时关注 db_index;cluster 场景通常不用。
job.reader.key_pattens*(全量)。biz:*、order:*。biz:* , order:*。key_pattens(不是 patterns)。read_mode(KEYS/SCAN)共同决定 Redis 侧扫描压力。key_pattens 用于控制要读哪些 key,越精确越省资源;务必注意参数名拼写。
job.reader.read_modeall / scan。all。all:小规模 keyspace、离线环境、或确定不会影响线上 Redis 时。scan:生产环境/大 keyspace(推荐)。scan。all,建议同时降低并行度、缩小 key_pattens,并在低峰执行。scan_batch_size、key_pattens 强联动。all 模式常见风险:Redis 卡顿、慢查询、延迟尖刺。read_mode=all(KEYS)。生产建议切换为 scan 并控制 pattern 与并行度。read_mode 是 Redis Source 最重要的稳定性参数之一:线上优先 scan,避免 KEYS 的阻塞风险。
job.reader.scan_batch_size10000。read_mode=scan 或 redis_parallel_read=true 时,用于控制扫描吞吐与压力。read_mode=scan、redis_parallel_read 强联动。scan_batch_size 是 scan 模式下的“节流阀”,调大更快但更压 Redis,调小更稳但可能更慢。
job.reader.schema_typedefault。default,一般无需修改。schema_type 目前是保留扩展点,生产环境保持 default 即可。
job.reader.client_timeout_ms60000(ms)。max_attempt_count、连接池 connection_pool_* 联动。client_timeout_ms 决定了“等多久算失败”,调小更敏捷但更敏感,调大更稳但更慢。
job.reader.connection_pool_max_total2。connection_pool_max_wait_time_ms 强联动(连接不足时会等待)。connection_pool_max_total 控制最大并发连接数量,过小可能阻塞,过大可能压垮 Redis 或触发连接数限制。
job.reader.connection_pool_max_idle2。max_total 保持同量级即可。connection_pool_max_idle 更多影响连接复用与稳定性,通常不需要大幅调整。
job.reader.connection_pool_min_idle0。max_idle/max_total 联动。connection_pool_min_idle 决定是否“预热连接”,一般按稳定性需求小幅设置即可。
job.reader.connection_pool_max_wait_time_ms60000(ms)。connection_pool_max_total、并行度联动。connection_pool_max_wait_time_ms 决定了连接不足时的等待策略:调小更快暴露问题,调大更“抗波峰”但可能积压延迟。
job.reader.max_attempt_count5。client_timeout_ms 相乘决定“最坏情况下卡多久”。max_attempt_count 用于提高抗抖动能力,但会增加最坏时延;调参时记得同时看 client_timeout_ms。
job.reader.enable_flat_valuefalse。skip_schema_validation=true,并明确下游消费约定。skip_schema_validation、reader_fetch_size 联动。enable_flat_value 让输出更“通用”,但可能带来读放大;适合做兼容/落盘,不适合盲目开启。
job.reader.redis_parallel_readfalse。deploy_mode=single 下使用。redis_batch_size、redis_pipeline_read_thread_num 联动。redis_parallel_read 更偏向“吞吐加速”,但对部署模式有硬约束,且会增加 Redis 压力,建议谨慎逐步放量。
job.reader.redis_pipeline_readfalse。deploy_mode=single 下使用。redis_batch_size=1000,再根据内存与吞吐调整。redis_batch_size、redis_pipeline_read_thread_num 联动。redis_pipeline_read 是“吞吐开关”,能显著减少网络往返,但会提高单次批处理的内存峰值;且 cluster 不支持。
job.reader.redis_batch_size1000。redis_pipeline_read=true 或 redis_parallel_read=true 时生效。redis_batch_size 越大通常越快,但也越吃内存;建议循序渐进调参并监控 Task 内存。
job.reader.redis_pipeline_read_thread_num2。redis_pipeline_read_thread_num 只对 pipeline 生效,用于把“单个 subtask 的读取处理”做并行化,建议小步调整。
job.reader.redis_wait_split_time_ms50(ms)。redis_wait_split_time_ms 用于降低空转成本,调大更省 CPU,调小更“敏捷”,建议按实际空转情况微调。
job.reader.reader_fetch_size10000。enable_flat_value=true 时,影响复杂结构的读取分批粒度。enable_flat_value 联动。reader_fetch_size 是 flat 模式下的“分页大小”,调大更快但更吃内存,调小更稳但可能更慢。
job.writer.*) 参数 | 默认值 | 说明 |
|---|---|---|
| 无 | 框架固定为 Redis Sink 实现类,一般不需要用户调整。 |
| 无 | 定义写入侧 schema;会影响不同 |
| 无 | Redis host;为空时会回退读 |
| 无 | Redis port;为空时会回退读 |
| 无 | 兼容字段,仅在 |
| 无 | 兼容字段,仅在 |
| 无 | ACL 用户(优先);为空时回退读 |
| 无 | 密码(优先);为空时回退读 |
| 无 | 兼容字段,仅在 |
| 无 | 兼容字段,仅在 |
|
| 选择 Redis DB(standalone 常用)。 |
|
| Jedis 连接/读写超时,影响失败率与恢复速度。 |
|
| key TTL; |
|
| TTL 单位:DAY/HOUR/MINUTE/SECOND。 |
|
| 写入数据结构:string/set/hash/mhash/sorted_set;决定列语义与命令。 |
| 无(内部会用 default_redis_key) | 复杂类型在“入参列不足”时补充容器 key。 |
|
| 写入攒批队列容量(满则 flush);吞吐/延迟/内存的关键权衡点。 |
|
| pipeline 日志采样间隔,用于控制日志量。 |
|
| 写侧连接池最大连接数;通常需要随并行度一起评估。 |
|
| 写侧连接池最大空闲连接数。 |
|
| 写侧连接池最小空闲连接数。 |
|
| pool 获取连接最大等待;过小易报连接不足,过大易堆积延迟。 |
|
| 写侧重试次数上限;提升抗抖动能力但会增大最坏延迟。 |
|
| 写前先 DEL;用于覆盖写/避免集合追加脏数据,但会产生写放大。 |
job.writer.classjob.writer.class 通常是框架固定项,除非明确知道要切换 Sink 实现,否则保持默认即可。
job.writer.columnsredis_data_type 时,列数与列语义不同:
string / set:通常 2 列(key, value)hash / sorted_set:通常 3 列(key, field/score, value)mhash:通常用于列数超过 3 的“多字段写入”。string(除非明确需要 binary 等)。sorted_set,score 列通常需要可转数值的内容。redis_data_type、additional_key 强联动。job.writer.columns 决定了写入数据的“解释方式”,配之前先明确 redis_data_type,再按该类型要求配置列数与列类型。
job.writer.redis_hostredis_host/redis_port 这一组参数。job.writer.host(兼容字段)。写 Redis 必须能连上目标实例,建议显式配置 redis_host 与 redis_port,避免依赖兼容字段。
job.writer.redis_portredis_host/redis_port 这一组参数。job.writer.port(兼容字段)。redis_port 是写入侧连接入口之一,建议与 redis_host 成对显式配置。
job.writer.hostredis_host 为空时回退使用。job.writer.host。job.writer.redis_host。redis_host 优先生效。job.writer.host 是兼容字段,建议逐步迁移到 redis_host 以减少歧义。
job.writer.portredis_port 为空时回退使用。job.writer.port。job.writer.redis_port。redis_port 优先生效。job.writer.port 是兼容字段,建议逐步迁移到 redis_port 以减少歧义。
job.writer.user_namejob.writer.password 配套使用。job.writer.user。ACL 场景建议优先使用 user_name/password 这一组参数,避免与兼容字段混用。
job.writer.passwordjob.writer.auth。password 用于写入侧认证,建议用安全方式管理并与 user_name 配套。
job.writer.useruser_name 为空时回退使用。job.writer.user。job.writer.user_name。user_name 优先生效。job.writer.user 是兼容字段,建议迁移到 user_name。
job.writer.authpassword 为空时回退使用。job.writer.auth。job.writer.password。password 优先生效。job.writer.auth 是兼容字段,建议迁移到 password。
job.writer.database0。database 用于选择写入的 DB,单机多 DB 场景才需要关注。
job.writer.client_timeout_ms60000(ms)。max_attempt_count 相乘决定最坏写入卡住时间。client_timeout_ms 是“等待阈值”,调小更敏捷但更敏感,调大更稳但失败恢复更慢。
job.writer.ttl-1(不设置 TTL)。-1。ttl_type 指定单位。ttl_type 联动决定最终过期秒数。string 类型,TTL 会走“带 TTL 的写入命令”;对复杂类型,可能引入额外写入动作,带来一定写放大与性能影响。ttl 用于控制数据生命周期,缓存场景很常用;但对复杂类型可能引入额外开销,建议结合吞吐与 Redis 压力一起评估。
job.writer.ttl_typeDAY。DAY / HOUR / MINUTE / SECOND。MINUTE/SECOND。HOUR/DAY。ttl 联动:最终秒数 = ttl * ttl_type。ttl_type 用于定义 TTL 的时间单位,建议结合业务的缓存周期选择合适粒度。
job.writer.redis_data_typestring。string / set / hash / mhash / sorted_set。string:key -> valueset:key -> set(value)hash:key -> hash(field -> value)mhash:key -> hash(多个 field -> value),通常用于列数 > 3 的写入sorted_set:key -> zset(score, member)string(最直观、最少歧义)。hash/sorted_set 时,务必对齐列数与列语义。columns 强联动:列数/列语义不匹配会导致运行失败或写入不符合预期。ttl/ttl_type 联动:是否需要 TTL、以及对复杂类型可能带来的额外开销。hash,但写出来的数据结构不对?columns 是否为 3 列(key、hash field、hash value)。如果只有 2 列,需要结合 additional_key 来补足“容器 key”的语义。redis_data_type 决定了写入的 Redis 结构与命令语义,是写入侧最核心的参数之一;配之前先明确目标数据结构,再按要求配置列。
job.writer.additional_keyhash/sorted_set/mhash 等复杂类型且“入参列不足”时,用于补充容器 key。default_redis_key。hash 或 sorted_set)。additional_key,避免默认值导致数据落到意料之外的位置。redis_data_type、columns 联动。additional_key 是复杂类型写入的“兜底容器 key”,当你输入列不够时才需要;建议显式配置以避免写入到默认容器。
job.writer.write_batch_interval50。max_attempt_count、client_timeout_ms、连接池 connection_pool_* 联动。write_batch_size 会生效。write_batch_interval 是否过小(导致频繁 flush),以及连接池 connection_pool_max_total 是否过小导致连接阻塞。write_batch_interval 是写入侧的关键调优参数:调大通常提升吞吐但增加延迟与内存峰值,调小则相反。
job.writer.log_sample_interval256。log_sample_interval 是观测性参数,稳定运行保持默认,排障时再调小即可。
job.writer.connection_pool_max_total2。connection_pool_max_wait_time_ms 联动。connection_pool_max_total 过小会导致写入等待连接,过大可能触发 Redis 连接数限制;建议基于监控与压测逐步调整。
job.writer.connection_pool_max_idle2。max_total 同量级即可。connection_pool_max_idle 主要影响连接复用,一般无需大幅调整。
job.writer.connection_pool_min_idle0。max_idle/max_total 联动。connection_pool_min_idle 用于“预热连接”,按稳定性需求小幅配置即可。
job.writer.connection_pool_max_wait_time_ms60000(ms)。connection_pool_max_total、写并行度联动。connection_pool_max_wait_time_ms 决定了连接不足时的等待上限,调参时建议先找出连接不足的根因。
job.writer.max_attempt_count5。client_timeout_ms 相乘决定最坏写入卡住时间。max_attempt_count 能提升抗抖动能力,但会增加最坏延迟;建议结合超时参数一起评估。
job.writer.delete_by_key_before_writing_enabledDEL,再执行实际写入。false。false。true,并评估 Redis QPS 与写入延迟(会有写放大)。DEL。delete_by_key_before_writing_enabled 是“用性能换一致性”的开关:能避免旧数据残留,但会显著增加 Redis 压力,务必谨慎使用。