Skip to content

Commit ad9a3d4

Browse files
committed
[doc-34812][redis] 修改redis sink文档
1 parent 3b4552a commit ad9a3d4

File tree

1 file changed

+158
-75
lines changed

1 file changed

+158
-75
lines changed

docs/plugin/redisSink.md

+158-75
Original file line numberDiff line numberDiff line change
@@ -1,114 +1,197 @@
11
## 1.格式:
2-
```
3-
CREATE TABLE tableName(
2+
3+
```sql
4+
CREATE TABLE flinkTableName(
45
colName colType,
56
...
6-
colNameX colType
7+
colNameX colType,
8+
PRIMARY KEY (colName, ..., colNameX)
79
)WITH(
810
type ='redis',
911
url = 'ip:port',
1012
database ='dbName',
1113
password ='pwd',
12-
redisType='1',
14+
redisType='1/2/3',
1315
tableName ='tableName',
14-
parallelism ='parllNum'
16+
parallelism ='parallelismNum'
1517
);
1618
```
1719

1820
## 2.支持版本
19-
redis5.0
21+
22+
redis5.x, redis6.x
2023

2124
## 3.表结构定义
22-
25+
26+
在redis结果表中,实际的数据使用hash的格式存储,其中,key的组合为tableName_primaryKeys。详细请看《7.Redis数据说明》
27+
2328
|参数名称|含义|
2429
|----|---|
25-
| tableName | 在 sql 中使用的名称;即注册到flink-table-env上的名称
26-
| colName | 列名称,redis中存储为 表名:主键名:主键值:列名]|
27-
| colType | 列类型,当前只支持varchar|
30+
| flinkTableName | 在 sql 中使用的名称;即注册到flink-table-env上的名称
31+
| colName | 列名称|
32+
| colType | 列类型|
2833

2934
## 4.参数:
30-
35+
3136
|参数名称|含义|是否必填|默认值|
3237
|----|---|---|-----|
3338
| type | 表名 输出表类型[mysq|hbase|elasticsearch|redis]|||
3439
| url | redis 的地址;格式ip:port[,ip:port]|||
3540
| password | redis 的密码 |||
3641
| redisType | redis模式(1 单机,2 哨兵, 3 集群)||
3742
| masterName | 主节点名称(哨兵模式下为必填项) ||
38-
| database | reids 的数据库地址|||
43+
| database | redis 的数据库地址|||
3944
| tableName | redis 的表名称|||
4045
| parallelism | 并行度设置||1|
41-
|timeout| 连接超时时间||10000|
42-
|maxTotal|最大连接数||8|
43-
|maxIdle|最大空闲连接数||8|
44-
|minIdle|最小空闲连接数|||0|
45-
|masterName| 哨兵模式下的masterName|||
46-
|primarykeys|主键字段,多个字段以逗号分割|||
47-
|keyExpiredTime|redis sink的key的过期时间。默认是0(永不过期),单位是s。|||
48-
49-
46+
| timeout | 连接超时时间||10000|
47+
| maxTotal |最大连接数||8|
48+
| maxIdle |最大空闲连接数||8|
49+
| minIdle |最小空闲连接数|||0|
50+
| masterName | 哨兵模式下的masterName|||
51+
| keyExpiredTime |redis sink的key的过期时间。默认是0(永不过期),单位是s。|||
52+
5053
## 5.样例:
51-
```
52-
CREATE TABLE MyTable(
53-
name varchar,
54-
channel varchar
55-
)WITH(
56-
type ='kafka10',
57-
bootstrapServers ='172.16.8.107:9092',
58-
zookeeperQuorum ='172.16.8.107:2181/kafka',
59-
offsetReset ='latest',
60-
topic ='mqTest01',
61-
timezone='Asia/Shanghai',
62-
updateMode ='append',
63-
enableKeyPartitions ='false',
64-
topicIsPattern ='false',
65-
parallelism ='1'
66-
);
67-
68-
CREATE TABLE MyResult(
54+
55+
```sql
56+
CREATE TABLE MyResult
57+
(
6958
channel VARCHAR,
70-
pv VARCHAR
71-
)WITH(
72-
type ='redis',
73-
primarykeys='name',
74-
redisType ='1',
75-
url ='172.16.8.109:6379',
76-
tableName ='resultTable',
77-
partitionedJoin ='false',
78-
parallelism ='1',
79-
database ='0',
80-
timeout ='10000',
81-
maxTotal ='60000',
82-
maxIdle='8',
83-
minIdle='0'
84-
);
85-
86-
insert
87-
into
88-
MyResult
89-
select
90-
channel,
91-
name as pv
92-
from
93-
MyTable a
94-
```
59+
pv VARCHAR,
60+
PRIMARY KEY (pv)
61+
) WITH (
62+
type = 'redis',
63+
redisType = '1',
64+
url = '172.16.8.109:6379',
65+
tableName = 'resultTable',
66+
partitionedJoin = 'false',
67+
parallelism = '1',
68+
database = '0',
69+
timeout = '10000',
70+
maxTotal = '60000',
71+
maxIdle = '8',
72+
minIdle = '0'
73+
);
74+
75+
```
9576

9677
## 6.redis完整样例
97-
### redis数据说明
78+
79+
```sql
80+
-- source
81+
CREATE TABLE SourceOne
82+
(
83+
id INT,
84+
age BIGINT,
85+
birth TIMESTAMP,
86+
todayTime TIME,
87+
todayDate DATE,
88+
price DECIMAL,
89+
name VARCHAR,
90+
phone VARCHAR,
91+
wechat VARCHAR,
92+
qq VARCHAR
93+
) WITH (
94+
type = 'kafka11',
95+
bootstrapServers = 'kudu1:9092',
96+
zookeeperQuorum = 'kudu1:2181',
97+
offsetReset = 'latest',
98+
topic = 'tiezhu_in',
99+
enableKeyPartitions = 'false',
100+
topicIsPattern = 'false'
101+
);
102+
103+
104+
CREATE TABLE SinkOne
105+
(
106+
id INT,
107+
age BIGINT,
108+
birth TIMESTAMP,
109+
todayTime TIME,
110+
todayDate DATE,
111+
price DECIMAL,
112+
name VARCHAR,
113+
phone VARCHAR,
114+
wechat VARCHAR,
115+
qq VARCHAR,
116+
PRIMARY KEY (id, name)
117+
) WITH (
118+
type = 'redis',
119+
url = 'kudu1:6379',
120+
database = '0',
121+
-- (1 单机,2 哨兵, 3 集群)
122+
redisType = '1',
123+
tableName = 'demo',
124+
partitionedJoin = 'false'
125+
);
126+
127+
CREATE VIEW ViewOne AS
128+
SELECT id,
129+
age,
130+
birth,
131+
todayTime,
132+
todayDate,
133+
price,
134+
name,
135+
phone,
136+
wechat,
137+
qq
138+
FROM SourceOne SO;
139+
140+
INSERT INTO SinkOne
141+
SELECT *
142+
FROM ViewOne;
143+
144+
```
145+
146+
## 7.redis数据说明
147+
98148
redis使用散列类型 hash 数据结构,key=tableName_primaryKey1_primaryKey2,value={column1=value1, column2=value2}
99149
如果以班级class表为例,id和name作为联合主键,那么redis的结构为 <class_1_john ,{id=1, name=john, age=12}>
100150

101151
### 源表数据内容
152+
153+
```json
154+
{
155+
"qq":63595541541,
156+
"todayTime":"10:19:40",
157+
"wechat":"微信号81850",
158+
"birth":"2021-01-19 10:19:40.075",
159+
"todayDate":"2021-01-19",
160+
"phone":18649852461,
161+
"price":1.4,
162+
"name":"tiezhu2",
163+
"id":2,
164+
"age":19
165+
}
102166
```
103-
{"name":"roc","channel":"daishu","age":2}
104-
```
167+
105168
### redis实际数据内容
106-
```
107-
127.0.0.1:6379> keys *
108-
1) "resultTable_roc"
109-
127.0.0.1:6379> hgetall resultTable_roc
110-
1) "channel"
111-
2) "daishu"
112-
3) "name"
113-
4) "roc"
169+
170+
```shell
171+
kudu1_redis_docker:0>keys *
172+
1) "demo_2_tiezhu2"
173+
2) "demo_4_tiezhu2"
174+
3) "demo_3_yuange"
175+
kudu1_redis_docker:0>hgetall demo_2_tiezhu2
176+
1) "qq"
177+
2) "63595541541"
178+
3) "todayTime"
179+
4) "10:19:40"
180+
5) "phone"
181+
6) "18649852461"
182+
7) "price"
183+
8) "1.400000000000000000"
184+
9) "name"
185+
10) "tiezhu2"
186+
11) "wechat"
187+
12) "微信号81850"
188+
13) "birth"
189+
14) "2021-01-19 10:19:40.075"
190+
15) "id"
191+
16) "2"
192+
17) "todayDate"
193+
18) "2021-01-19"
194+
19) "age"
195+
20) "19"
196+
kudu1_redis_docker:0>
114197
```

0 commit comments

Comments
 (0)