我有一个拥有blob(大小在几十MB)的redis键/值存储,而我在java应用程序中使用的jedis客户端从jedis连接的get方法返回一个字节数组。目前,我必须将结果包装在流中以处理字节。是否有任何替代方案可以让我直接传输结果?其他客户或使用Jedsi的方法?谢谢你的任何建议。
答案 0 :(得分:1)
如果您没有找到任何可用的现有驱动程序来执行您喜欢的操作,您可以直接从您的java代码中调用redis。
redis服务器使用的协议RESP(REdis Serialization Protocol)非常简单。我研究了它并实现了一个完整的java驱动程序,只是为了在不到半天的时间内测试我的能力。这是RESP规范的link。例如,您可以从现有驱动程序开始,并添加自定义功能以根据需要流式传输数据。
答案 1 :(得分:0)
没有提到types用于在redis中存储大对象。
但是你可以将它存储为字符串,对于缓冲流,你可以使用redis的GETRANGE
命令,它返回给定范围的字符串。
使用GETLEN
获取数据长度。
使用redis pipeline
创建一系列GETRANGE
命令来读取不同的数据页面。与设置数据类似,您可以使用SETRANGE
命令。
请在redis java客户端中找到所提到的redis命令的具体实现。