当前位置: 首页 > news >正文

Redis JSON 用id读取content总结(sendCommand())

Redis JSON 读取总结(方法 2 - sendCommand()

💡 背景

在 Redis 中,我们存储了 JSON 数据,并希望通过 Jedis sendCommand() 方式读取 JSON 里的 "content" 字段。由于 jedis.jsonGet() 可能在旧版本不支持,我们使用手动发送 JSON.GET 命令的方法。


🔹 1. Redis JSON 结构

Redis 存储的数据格式如下:

 

{ "embedding": [...], "content": "这是存储在 Redis 里的文本内容" }

存储的 Redis Key 形如:

 

default:<UUID>

default:d2c506f3-0f69-4aeb-ae9b-9fd245438672


🔹 2. 使用 sendCommand() 读取 JSON

✅ Java 代码

 

import java.nio.charset.StandardCharsets; import redis.clients.jedis.Jedis; import redis.clients.jedis.commands.ProtocolCommand; public class RedisJsonFetcher { public static void main(String[] args) { try (Jedis jedis = new Jedis("localhost", 6379)) { // **拼接 Redis Key,确保格式正确** String redisKey = "default:d2c506f3-0f69-4aeb-ae9b-9fd245438672"; // **执行 JSON.GET 命令** Object jsonData = jedis.sendCommand(new ProtocolCommand() { @Override public byte[] getRaw() { return "JSON.GET".getBytes(); } }, redisKey, "$.content"); // **转换 byte[] 为 String** if (jsonData instanceof byte[]) { String content = new String((byte[]) jsonData, StandardCharsets.UTF_8); System.out.println("Redis Content: " + content); } else { System.out.println("Unexpected data type: " + jsonData); } } catch (Exception e) { e.printStackTrace(); } } }


🔹 3. 关键点

确保 Key 拼接 default: 前缀(避免找不到数据)
使用 sendCommand() 发送 JSON.GET 命令
Redis 返回 byte[],需要转换为 String

 

new String((byte[]) jsonData, StandardCharsets.UTF_8)


🔹 4. 可能遇到的问题

问题原因解决方案
null 返回Key 可能不存在使用 KEYS default:* 检查 Key
ERR unknown command 'JSON.GET'Redis 未启用 JSON 模块运行 MODULE LIST 检查是否安装 rejson
java.lang.ClassCastException: [B cannot be cast to StringRedis 返回 byte[],但被错误转换new String((byte[]) jsonData, StandardCharsets.UTF_8) 进行转换

1 在 8001 界面搜索default+id搜索成功  在java必须拼凑"default"+id


🔹 5. Redis CLI 调试

✅ 1. 检查 Key 是否存在

 

KEYS default:*

✅ 2. 直接在 Redis CLI 测试 JSON.GET

 

JSON.GET default:d2c506f3-0f69-4aeb-ae9b-9fd245438672 $.content

如果 null,说明 Key 不存在或 JSON 结构错误。

✅ 3. 检查 Redis 是否启用了 JSON 模块

 

MODULE LIST

如果没有 rejson,需要安装:

 

redis-server --loadmodule /path/to/rejson.so

或者 Docker:

 

docker run -d --name redis-json -p 6379:6379 redislabs/rejson:latest


🔹 6. 总结

步骤要点
拼接 KeyString redisKey = "default:" + vectorId;
发送 JSON.GET 命令jedis.sendCommand(new ProtocolCommand() {...}, redisKey, "$.content");
转换 byte[]new String((byte[]) jsonData, StandardCharsets.UTF_8);
检查 Key 是否存在KEYS default:*
检查 Redis JSON 模块MODULE LIST

🎉 至此,你已经成功使用 sendCommand() 方式查询 Redis JSON 数据!🚀

相关文章:

  • VLLM专题(二十一)—分布式推理与服务
  • Unity URPShader:实现和PS一样的色相/饱和度调整参数效果
  • MarsCode AI实战:利用DeepSeek 快速搭建你的口语学习搭子
  • HttpClient通讯时间过久
  • 计算机网络技术服务管理基于Spring Boot-SSM
  • 前端流式输出实现详解:从原理到实践
  • 模型部署实战:PyTorch生产化指南
  • git clone项目报错fatal: fetch-pack: invalid index-pack output问题
  • 红日靶场(二)——个人笔记
  • TCP心跳消息
  • Multisim学习-01 特点安装使用和第一个仿真实例
  • 计算机组成原理 第六章 总线
  • 图像分割的mask有空洞怎么修补
  • tldr命令助记
  • Qt 控件概述 QLCDNumber 和 Progressbar
  • 手动集成sqlite的方法
  • 我开发的PDF转WORD免费工具
  • 【LangChain入门 4 Prompts组件】提示词追加示例 FewShotPromptTemplate和示例选择器ExampleSelector
  • Vision-R1:用 “冷启动 + 强化学习” 解锁多模态模型的推理能力
  • AI音乐创作原理:解锁创意与算法的完美结合
  • 人民空军:网上出现的“运-20向外方运送物资”为不实消息
  • 美国长滩港货运量因关税暴跌三成,港口负责人:货架要空了
  • 同济大学原常务副校长、著名隧道及地下工程专家李永盛逝世
  • 瑞士联邦主席凯勒-祖特尔、联邦副主席帕姆兰会见何立峰
  • “一嗨租车”陷“五年后扣费”疑云,用户:违章处理莫名消失
  • 正荣地产:前4个月销售14.96亿元,控股股东已获委任联合清盘人