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 エンコーディングではありません。