4

我有一些以字节为单位的数据,我想把它们放到 Redis 中,但是 Redis 只接受二进制安全字符串,而我的数据有一些二进制非安全字节。那么如何将这些字节转换为二进制安全字符串,以便将它们保存到 Redis 中呢?

Base64 对我有用,但它使数据更大,有更好的主意吗?

更新:我想将我的protobuf对象序列化为Redis,并且序列化的数据有'\x00',所以当我从Redis读取数据时,我无法将数据反序列化为对象。然后我尝试了base64,它工作正常,但尺寸更大。

所以我想弄清楚如何安全地将二进制数据(protobuf 对象)序列化到 Redis,并且尺寸更小

4

2 回答 2

2

您可以尝试 ISO-8859-1 编码。这使用字节和字符之间的一对一映射。

这仍然可能导致损坏,具体取决于 Redis 需要此“二进制安全”字符串的原因。您可能必须使用 base64。

于 2012-12-13T10:38:47.370 回答
-1

序列化二进制对象(例如 protobuf 对象)的唯一安全方法是对其进行 base64 编码。Base64 有 33% 的开销,但让您能够安全地从任意二进制数据转换为文本(例如用于 xml 文件)并返回。

于 2013-01-03T20:42:27.317 回答