Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中以流形式检索redis值的示例_Java_Io_Redis_Jedis - Fatal编程技术网

java中以流形式检索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驱动程序,只是

我有一个redis键/值存储,存储着blob(大小为数十MB),我在java应用程序中使用的jedis客户端从jedis连接的get方法返回一个字节数组。目前,为了处理字节,我必须将结果包装在流中。有没有其他方法可以让我直接流式处理结果?其他客户端或使用Jedsi的方式?谢谢您的建议。

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

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

没有提到在redis中存储大型对象

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

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

参考:


请在您的redis java客户端中查找上述redis命令的具体实现。

AFAIK我认为您无法流式处理jedis查询的结果。如果您想流式处理,您应该跳转到另一个专门用于流式处理shipwire/redis的redis库。这个库是用GO编写的。(同时也是一个建议,redis在密钥/存储级别上非常快,数据很小,可以复制)对于较大的数据(我假设是视频、音乐或图像)的存储,为什么不使用更传统的DB,支持在驱动程序中本地流式传输?