*Redis VISMEMBER 命令
VISMEMBER 用于判断指定的 ID 是否存在于向量集合中。
*语法
VISMEMBER key id
*参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| key | String | 是 | 向量集合的键名 |
| id | String | 是 | 待查询的向量唯一标识符 |
*返回值
- Integer(1):ID 存在于向量集合中
- Integer(0):ID 不存在或键不存在
- Error:键对应的值不是向量集合类型
*时间复杂度
O(1)
*
*示例
*基本用法
> VADD user_embeddings user1 [0.1, 0.2, 0.3, 0.4]
1
> VISMEMBER user_embeddings user1
1
> VISMEMBER user_embeddings user2
0
*查询不存在的键
> VISMEMBER non_existent_key user1
0
*批量添加后验证
> VADD items item1 [0.1, 0.2]
1
> VADD items item2 [0.3, 0.4]
1
> VISMEMBER items item1
1
> VISMEMBER items item3
0
*常见错误
| 错误 | 原因 | 解决 |
|---|---|---|
| ERR wrong number of arguments | 缺少 key 或 id 参数 | 补充完整参数 |
| WRONGTYPE Operation against a key holding the wrong kind of value | key 不是向量集合 | 确认 key 类型正确 |
*最佳实践
- 场景:向量去重检查、数据完整性校验、更新前确认存在性
- 批量查询时建议使用 Pipeline 减少网络往返
- 与 VADD 配合可实现「存在则更新,不存在则新增」的幂等逻辑
*FAQ
Q1: VISMEMBER 和 SISMEMBER 有什么区别? A: VISMEMBER 用于向量集合,SISMEMBER 用于 Redis Set 类型。两者底层数据结构不同。
Q2: 键不存在时返回什么? A: 返回 0。
Q3: 可以一次查询多个 ID 吗? A: 当前命令仅支持单 ID 查询,批量查询建议使用多个 VISMEMBER 配合 Pipeline。