java中以流形式检索redis值的示例
我有一个redis键/值存储,存储着blob(大小为数十MB),我在java应用程序中使用的jedis客户端从jedis连接的get方法返回一个字节数组。目前,为了处理字节,我必须将结果包装在流中。有没有其他方法可以让我直接流式处理结果?其他客户端或使用Jedsi的方式?谢谢您的建议。如果您找不到任何可用的现有驱动程序来执行您喜欢的操作,您可以从java代码中直接调用redis redis服务器使用的协议RESP(redis序列化协议)非常简单。我研究了它并实现了一个完整的java驱动程序,只是为了在不到半天的时间内测试我的能力。以下是to RESP规范。例如,您可以从现有的驱动程序开始,添加一个自定义功能来流式传输数据。没有提到在redis中存储大型对象 但您可以将其存储为字符串,对于缓冲流,您可以使用redis的java中以流形式检索redis值的示例,java,io,redis,jedis,Java,Io,Redis,Jedis,我有一个redis键/值存储,存储着blob(大小为数十MB),我在java应用程序中使用的jedis客户端从jedis连接的get方法返回一个字节数组。目前,为了处理字节,我必须将结果包装在流中。有没有其他方法可以让我直接流式处理结果?其他客户端或使用Jedsi的方式?谢谢您的建议。如果您找不到任何可用的现有驱动程序来执行您喜欢的操作,您可以从java代码中直接调用redis redis服务器使用的协议RESP(redis序列化协议)非常简单。我研究了它并实现了一个完整的java驱动程序,只是
GETRANGE
命令返回给定范围的字符串
使用GETLEN
获取数据长度。
使用redispipeline
创建一系列GETRANGE
命令来读取不同页面的数据。与设置数据类似,您可以使用SETRANGE
命令
参考:
请在您的redis java客户端中查找上述redis命令的具体实现。AFAIK我认为您无法流式处理jedis查询的结果。如果您想流式处理,您应该跳转到另一个专门用于流式处理shipwire/redis的redis库。这个库是用GO编写的。(同时也是一个建议,redis在密钥/存储级别上非常快,数据很小,可以复制)对于较大的数据(我假设是视频、音乐或图像)的存储,为什么不使用更传统的DB,支持在驱动程序中本地流式传输?