从 RisingWave 导出数据到 Redis
本文描述了如何将数据从 RisingWave 导出到 Redis。
Redis 是一个开源的、基于内存的数据结构存储系统,通常被称为数据结构服务器。RisingWave 以字符串形式将键值对存储在指定格式(JSON
或 TEMPLATE
)中导出数据到 Redis,因此必须始终提供主键。
您可以通过使用 RisingWave 仓库中 integration_test 目录
的 redis-sink
Demo,在您自己的设备上测试此过程。
开始之前
在从 RisingWave 导出数据到 Redis 之前,请确保满足以下条件:
- 目标 Redis 数据库可以从 RisingWave 访问。
- 确保您有一个可以从中导出数据的上游物化视图或 Source。
句法
CREATE SINK [ IF NOT EXISTS ] sink_name
[FROM sink_from | AS select_query]
WITH (
connector='redis',
connector_parameter = 'value', ...
)
FORMAT data_format ENCODE data_encode [ (
format_parameter = 'value' ) ]
;
参数
参数名称 | 描述 |
---|---|
redis.url | 必填。Redis 数据库的地址。 |
primary_key | 必填。Sink 的主键。如有必要,使用 ',' 分隔主键列。 |
Sink 参数
字段 | 注释 |
---|---|
data_format | 数据格式。允许的格式:
|
data_encode | 数据编码。支持的编码:
|
force_append_only | 如果为 true ,即使不能做到也会强制 Sink 为 PLAIN (即 append-only )。 |
redis_key_format | 如果 data_encode 是 TEMPLATE ,则必填。指定键的格式为字符串。 |
redis_value_format | 如果 data_encode 是 TEMPLATE ,则必填。指定值的格式为字符串。 |
示例
假设我们从一个 Source 创建了一个物化视图:bhv_mv
。
CREATE MATERIALIZED VIEW bhv_mv AS
SELECT
user_id,
target_id,
event_timestamp
FROM
source_1;
我们可以通过创建一个 Sink,从 bhv_mv
导出数据到 Redis。这里,data_encode
是 JSON
。
CREATE SINK redis_sink
FROM bhv_mv WITH (
connector = 'redis',
primary_key = 'user_id',
redis.url= 'redis://127.0.0.1:6379/'
) FORMAT PLAIN ENCODE JSON (
force_append_only='true'
);
我们可以通过创建一个 Sink,从 bhv_mv
导出数据到 Redis。这里,data_encode
是 TEMPLATE
,因此必须定义 redis_key_format
和 redis_value_format
。
CREATE SINK redis_sink_2
FROM bhv_mv WITH (
primary_key = 'user_id',
connector = 'redis',
redis.url= 'redis://127.0.0.1:6379/',
) FORMAT PLAIN ENCODE TEMPLATE (
force_append_only='true',
redis_key_format = 'UserID:{user_id}',
redis_value_format = 'TargetID:{target_id},EventTimestamp{event_timestamp}'
);