4

バイト単位のデータがあり、それらを Redis に入れたいのですが、Redis はバイナリ セーフ文字列しか受け入れず、データにはバイナリ 非セーフ バイトが含まれています。では、これらのバイトを安全なバイナリ文字列に変換して、Redis に保存するにはどうすればよいでしょうか?

Base64は私にとってはうまくいきますが、データが大きくなります。より良いアイデアはありますか?

更新: protobuf オブジェクトを Redis にシリアル化したいのですが、シリアル化されたデータに '\x00' が含まれているため、Redis からデータを読み取るときに、データをオブジェクトに逆シリアル化できません。次に、base64 を試してみました。正常に動作しますが、サイズが大きくなります。

そこで、バイナリ データ (protobuf オブジェクト) を Redis に安全かつ小さいサイズでシリアル化する方法を見つけたいと考えています。

4

2 に答える 2

2

ISO-8859-1エンコーディングを試すことができます。これは、バイトと文字の間で1対1のマッピングを使用します。

これでも、Redisがこの「バイナリセーフ」文字列を必要とする理由によっては、破損が発生する可能性があります。base64を使用する必要がある場合があります。

于 2012-12-13T10:38:47.370 に答える
-1

バイナリ オブジェクト (protobuf オブジェクトなど) をシリアル化する唯一の安全な方法は、base64 でエンコードすることです。Base64 には 33% のオーバーヘッドがありますが、任意のバイナリ データからテキスト (xml ファイルでの使用など) に安全に変換したり、元に戻すことができます。

于 2013-01-03T20:42:27.317 に答える