2

Rust のアプリケーションによって読み取られる redis キャッシュに格納されているデータがあります。データはpythonによって保存されています。文字列または配列を格納するときはいつでも、Rust に読み込むことができなかった奇妙な形式で格納されます。逆にRustで書いてPythonで読めるようにしたい。

ジャンゴシェルの使用:

In [0]: cache.set("test","abc")
In [1]: cache.get("test")
Out[1]:'abc'

redis-cli の使用:

127.0.0.1:6379> GET :1:test
"\x80\x04\x95\a\x00\x00\x00\x00\x00\x00\x00\x8c\x03abc\x94."

Rust からの出力:

Err(Invalid UTF-8)

Rust コードは、redis-rs ライブラリを使用してデータを読み取ります。

    let client = redis::Client::open("redis://127.0.0.1:6379")?;
    let mut con = client.get_connection()?;
    let q:Result<String, redis::RedisError> = con.get(":1:test");
    println!("{:?}",q);

Python で書かれた文字列や配列を Rust に読み込めるようにしたいのですが、その逆も可能です。また、1 つのキーのデータは、Rust または Python のいずれかによってのみ書き込まれます。両方ではありません。

この質問は、特にアクセントエンコーディングを扱っているため、これと重複していませんが、配列の問題も解決したいと考えています。さらに、文字列に対して django によって redis に設定される値は、単に文字列の UTF エンコーディングではありません。

4

1 に答える 1