首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Streambase(Java)发布的Redis中读取二进制数据类型

从Streambase(Java)发布的Redis中读取二进制数据类型
EN

Stack Overflow用户
提问于 2022-10-14 13:49:32
回答 1查看 33关注 0票数 0

以下是将数据发布到Redis的java代码

代码语言:javascript
复制
import com.streambase.sb.util.ByteOrderedDataOutput;

byte[] valuebuffer=null;
ByteOrderedDataOutput boutput = new ByteOrderedDataOutput(0,tuple.getByteOrder());      
tuple.serialize(boutput,0); 
valuebuffer = boutput.getBuffer();
byte[] keybuffer = null;
String keyvalue = redisStream+"."+keyFieldStr;
keybuffer = keyvalue.getBytes();
strLuaCommands += "redis.call('set',KEYS["+ (++keyCount) +"],ARGV["+ (++argCount) +"])";
keys.add(keybuffer);
args.add(valuebuffer);

我能够通过python获得数据,但这不是正确的格式。

代码语言:javascript
复制
import redis, struct
redis_client = redis.StrictRedis(host="abc.com", port=6379,  db=0)
temp = redis_client.get('samplekey')
struct.unpack("<" + ("s" * (len(temp))), temp) 
EN

回答 1

Stack Overflow用户

发布于 2022-10-15 12:29:16

Tuple.serialize()使用com.streambase.sb.util.ByteOrderedDataOutput类,它从未成为StreamBase公共API的一部分。因此,Tuple.serialize()方法也不应被视为公共API的一部分。

而且,没有特别的理由相信Python ()方法知道如何理解StreamBase的struct.unpack,不管它是什么。所以,毫不奇怪,你正在打开的不是你想要的东西。

一种快速想象的解决方法是使用StreamBase Python操作符将您的StreamBase元组转换为StreamBase对象,然后使用Python将您想要写的任何东西写到redis中。然后,由于您现在已经用相同的Python互补库函数对其进行了编码和解码,所以您将有更好的机会不损坏您的数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74070278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档