以下是将数据发布到Redis的java代码
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获得数据,但这不是正确的格式。
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) 发布于 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互补库函数对其进行了编码和解码,所以您将有更好的机会不损坏您的数据。
https://stackoverflow.com/questions/74070278
复制相似问题