示例在java中将redis值检索为流

时间:2014-08-22 03:33:31

标签: java io redis jedis

我有一个拥有blob(大小在几十MB)的redis键/值存储,而我在java应用程序中使用的jedis客户端从jedis连接的get方法返回一个字节数组。目前,我必须将结果包装在流中以处理字节。是否有任何替代方案可以让我直接传输结果?其他客户或使用Jedsi的方法?谢谢你的任何建议。

2 个答案:

答案 0 :(得分:1)

如果您没有找到任何可用的现有驱动程序来执行您喜欢的操作,您可以直接从您的java代码中调用redis。

redis服务器使用的协议RESP(REdis Serialization Protocol)非常简单。我研究了它并实现了一个完整的java驱动程序,只是为了在不到半天的时间内测试我的能力。这是RESP规范的link。例如,您可以从现有驱动程序开始,并添加自定义功能以根据需要流式传输数据。

答案 1 :(得分:0)

没有提到types用于在redis中存储大对象。

但是你可以将它存储为字符串,对于缓冲流,你可以使用redis的GETRANGE命令,它返回给定范围的字符串。

使用GETLEN获取数据长度。 使用redis pipeline创建一系列GETRANGE命令来读取不同的数据页面。与设置数据类似,您可以使用SETRANGE命令。

参考:redis commands

请在redis java客户端中找到所提到的redis命令的具体实现。