sybn sybn-util 项目说明文档 - 基于java的跨数据库联合查询

redis_list / redis_list_member 列表表

2026-09-23
sybn

两张虚拟表都对应 redis 的 list 数据结构, 元素按插入顺序排列, 允许重复, 区别只在结果形态:

虚拟表 形态 value 类型 limit 限制 适用场景
redis_list 一行一个 key(聚合) string[] 数组 key 数 key 多, 每 key 元素少
redis_list_member 一行一个元素(展开) string 标量 元素行数(跨 key) key 少, 元素多

等效 DQL

  • 虚拟表 SQL
-- 聚合: 一行一个 key, value 为全部元素数组
select * from redis_list where key in ('queue:1', 'queue:2')

-- 展开: 一行一个元素, 带位置 idx
select * from redis_list_member where key = 'queue:1' limit 100
  • 等效 redis 原生命令
LRANGE queue:1 0 -1

聚合形态取整个 list; 展开形态按剩余配额分批 LRANGE, 不会一次性拉取超大 list.

返回字段

redis_list(聚合):

字段 类型 说明
key string redis key
value string[] list 全部元素, key 不存在时为空数组

redis_list_member(展开):

字段 类型 说明
key string redis key
idx int 元素位置(从 0 开始, 每个 key 独立计数)
value string list 元素, key 不存在时无行

可查指标

指标 获取方式 说明
全部元素(聚合) redis_list where key = 'l1' 按顺序的元素列表
全部元素(展开) redis_list_member where key = 'l1' 每个元素一行, 可直接 where/join, 并带 idx
元素长度 聚合取 value size / 展开对行 count 等于 LLEN
type redis_scan 恒为 list
ttl redis_scan key 的过期时间

查询示例

-- 聚合: 查整个 list
select * from redis_list where key = 'queue:1'

-- 聚合: 批量查, limit 限制 key 数
select * from redis_list where key in ('queue:1', 'queue:2') limit 10

-- 展开: 每个元素一行
select * from redis_list_member where key = 'queue:1'

-- 展开: limit 限制元素行数
select * from redis_list_member where key = 'queue:1' limit 100

-- 展开: limit 跨 key 累计, 第一个 key 取完接着取第二个, 新 key 的 idx 从 0 重新计数
select * from redis_list_member where key in ('queue:1', 'queue:2') limit 150

限制

  1. 只支持 key = 与 key in, 不支持 and 组合.
  2. 默认上限 10000(聚合为 key 数, 展开为元素行数); 聚合固定取全量(LRANGE 0 -1), 不支持下标范围参数.
  3. 展开形态按 idx 顺序返回, 不支持倒序.
  4. 不支持 group by / order by(请在外层 SQL 中完成).
  5. key 不是 list 类型时返回”数据类型错误”.

相关文档: redis_set / redis-dao / dynamicSourceWrite


Similar Posts

Comments

暂不开放评论! 可微信联系