Apache Beam的RedisIO是否批量写入服务端?是否支持调整批量写入策略?
Apache Beam Java SDK RedisIO 写入批量机制问题解答
写入操作是否会批量发送请求
- RedisIO的写入逻辑默认开启批量提交,底层基于Jedis客户端的Pipeline能力聚合多条命令后一次性发送到Redis服务端,大幅减少网络IO开销,提升写入性能。
- 默认的触发批量提交的规则为:攒满1000条命令、或者距离上一次提交满指定时间阈值,两个条件满足任意一个即触发批量提交。
批量策略是否支持自定义调整
支持自定义调整批量规则,你可以通过RedisIO.Write提供的配置方法修改相关参数:
- 调整单批最大命令数:调用
withBatchSize(long batchSize)方法传入你期望的单批次最多包含的命令条数。如果传入数值为1,等价于关闭批量能力,每条命令单独发送到服务端。 - 调整批量最大等待时间:调用
withBatchTimeMs(long batchTimeMs)方法传入攒批的最长等待时长,单位为毫秒,达到该时长即使没到设定的单批最大命令数,也会立即提交当前攒的所有命令,避免数据延迟过高。
自定义批量策略的参考代码:
// 配置单批最多500条命令、最长等待1秒的Redis写入实例 RedisIO.Write<String> customBatchWrite = RedisIO.write() .withEndpoint("你的Redis地址", 6379) .withBatchSize(500L) .withBatchTimeMs(1000L);
内容的提问来源于stack exchange,提问作者user16754855
相关产品推荐
相关产品推荐

