redis_hash 对应 redis 的 hash 数据结构, 一个大 key 下有多个 field(小 key), 每个 field 各存一个值.
等效 DQL
- 虚拟表 SQL
-- 查整个 hash(所有 field)
select * from redis_hash where key = 'h1'
-- 查单个 field, 用 大key.小key
select * from redis_hash where key = 'h1.f1'
- 等效 redis 原生命令
HGETALL h1
HGET h1 f1
返回字段
| 字段 | 类型 | 说明 |
|---|---|---|
| key1 | string | redis 大 key |
| key2 | string | redis 小 key(field) |
| value | string | field 对应的值 |
查整个 hash 时, 每个 field 返回一行; 查单个 field 时只返回一行.
可查指标
| 指标 | 获取方式 | 说明 |
|---|---|---|
| 每个 field 值 | where key = 'h1' |
全量 field |
| 单个 field 值 | where key = 'h1.f1' |
指定 field |
| field 数量 | 对结果行 count | hash 中 field 的个数 |
| type | redis_scan | 恒为 hash |
| ttl | redis_scan | 整个 key 的过期时间 |
查询示例
-- 查整个 hash
select * from redis_hash where key = 'user:1'
-- 查单个 field
select * from redis_hash where key = 'user:1.name'
-- 批量查多个 key
select * from redis_hash where key in ('h1', 'h2.f1')
限制
- 只支持
key =与key in, 不支持 and 组合. - 小 key 通过点号
大key.小key指定, 不支持 field 名本身含点号的场景(会按第一个点号拆分). - 不支持 group by / order by / limit.
- key 不是 hash 类型时返回”数据类型错误”.
相关文档: redis-dao / dynamicSourceWrite