本文为您介绍如何创建实时计算Redis维表以及创建过程中涉及到的WITH参数、类型映射和属性字段。

说明
  • 本文仅适用于实时计算3.2.2及以上版本。
  • 实时计算Redis维表仅支持引用Redis数据存储中String类型的数据。
  • 实时计算Redis维表支持自建Redis服务。

语法示例

实时计算支持使用Redis作为数据存储结果表。Redis结果表语法示例如下。
CREATE TABLE white_list (
  id VARCHAR,
  name VARCHAR,
  PRIMARY KEY (id),  --Redis中的Row Key字段。
  PERIOD FOR SYSTEM_TIME --维表的标识。
) WITH (
  type = 'redis',
  host = '<yourHostName>',
  port = '<yourPort>',
  password = '<yourPassword>',
  dbNum = '<yourDatabaseNumber>'
)
说明
  • Redis维表必须声明且只能声明一个主键。
  • 维表JOIN时,ON的条件必须包含所有主键的等值条件。
  • Redis维表仅支持声明两个字段,且字段类型必须为VARCHAR。

WITH参数

参数 注释书名 是否必填 备注
type 源表类型。 固定值:redis
host Redis连接地址。 无。
port Redis连接端口。 默认值为6379。
dbNum 选择操作的数据库。 默认为0。
password Redis密码。 默认为空,不进行权限验证。
hashName Hash模式下的Hash Key名称。 默认为空,数据将按照STRING类型从Redis读取。如果存在且不为空,则将按照HASHMAP类型读取,其中keyhashName值,field为主键值。
说明 正常情况下Redis维表在Redis内部的数据类型都是STRING类型,即key-value对。如果设置hashName参数 ,则Redis维表在Redis内部为HASHMAP类型,即key-{field-value}对,其中:
  • keyhashName参数值值。
  • field为您在CREATE TABLE中指明的key参数值。
  • valuekey对应的赋值,和STRING类型key-valuevalue语义相同。

CACHE参数

参数 注释说明 是否必填 备注
cache 缓存策略 默认 None, 可选 LRU
  • None:无缓存。
  • LRU:最近使用策略缓存。需要配置cacheSize参数和cacheTTLMs参数。
cacheSize 缓存大小 选择LRU缓存策略后,可以设置缓存大小,默认为10000行。
cacheTTLMs 缓存超时时长 默认缓存不超时,单位为毫秒。可选LRU缓存策略,即设置缓存失效的超时时长。
cacheEmpty 是否缓存空结果 默认为ture。

类型映射

Redis和实时计算字段类型对应关系如下。建议您使用该对应关系进行DDL声明。
Redis字段类型 实时计算字段类型
STRING VARCHAR

代码示例

包含Redis结果表的实时计算作业代码示例如下。
CREATE TABLE event (
  id VARCHAR, 
  data VARCHAR) with (
    type = 'random'
);

CREATE TABLE white_list (
  id VARCHAR,
  name VARCHAR,
  PRIMARY KEY (id),  --Redis中的Row Key字段。
  PERIOD FOR SYSTEM_TIME --维表的标识。
) WITH (
  type = 'redis',
  host = '<yourRedisHost>',
  password = '<yourRedisPassword>'
);

SELECT e.*, w.*
FROM event AS e
JOIN white_list FOR SYSTEM_TIME AS OF PROCTIME() AS w
ON e.id = w.id;