Redis 表引擎
该引擎允许将 ClickHouse 与 Redis 集成。由于 Redis 采用键值(KV)模型,我们强烈建议仅执行点查询,例如使用 where k = xx 或 where k in (xx, xx)。
创建数据表
引擎参数
host:port— Redis 服务器地址,可以省略端口,此时将使用 Redis 默认端口 6379。db_index— Redis 数据库索引,索引范围为 0 到 15,默认值为 0。password— 用户密码,默认是空字符串。pool_size— Redis 最大连接池大小,默认值为 16。primary_key_name- 列表中的任意一列列名。
Serialization
PRIMARY KEY 只支持单列。主键会以二进制形式序列化为 Redis key。
除主键外的列会按对应顺序以二进制形式序列化为 Redis value。
参数也可以通过 named collections 传入。在这种情况下,host 和 port 应分别指定。生产环境推荐使用这种方式。目前,通过 named collections 传递给 Redis 的所有参数都是必需的。
Filtering
带有 key equals 或 in filtering 的查询将被优化为从 Redis 进行多键查找。对于未按键过滤的查询,将会执行全表扫描,这是一种开销很大的操作。
使用示例
在 ClickHouse 中使用 Redis 引擎和基本参数创建一张表:
或者使用命名集合:
插入:
查询:
更新:
请注意,主键不可更新。
删除:
Truncate:
以异步方式清空 Redis 数据库。此外,Truncate 也支持 SYNC(同步)模式。
Join:
与其他表进行关联(JOIN)。
限制
Redis 引擎也支持扫描查询,例如 where k > xx,但存在一些限制:
- 在极少数情况下,当正在进行 rehashing 时,扫描查询可能会产生一些重复的键。详情参见 Redis Scan。
- 在扫描过程中,键可能被创建或删除,因此结果数据集无法表示某个时间点上的有效快照。