2012-04-16 3 views
3

Goからmemcacheに書き込み、Javaから読み込むことはできますか?GoとJavaを使ってGae上でMemcacheを共有

memcacheビューアからは、「Java文字列」と「文字列」のキーが存在するため、答えは「いいえ」のように見えます。 []バイトを共有するのはどうですか?

Appengine上でJavaとGoの間で通信する唯一の方法は、Webフックとデータストアですか?

おかげ

+1

GoとJavaアプリケーションからmemcacheと通信する方法を考えてみてください。 – alphazero

+0

+1 @alphazero。これは、情報を共有する真の方法ではないようです。 – Ashe

+0

私は従いません。 @alphanzero、Goのアイテムタイプは値を[]バイトとして保存しますが、Javaアプリケーションで読み取ることはできませんか?おそらく、低レベルのAPIを使用しています。memcacheが(異なる言語の)バージョン間で共有されていないことを文書化したことはありません。 –

答えて

2

私はあなたの質問への答えを知らないが、あなたはMemcacheSerialization.java方法のmakePbKeyにその一部があります。これは、JavaがObjectをどのように取得してキーを生成するかを示しています。

同様に、ファイルappengine/memcache/memcache.goでは、AppEngine for GoがItem.Key(タイプ文字列)からどのようにキーを作成するかを確認できます。 GetMultiを参照してください。ここで、各キーは単純なキャストによって文字列から[]バイトに変換されます。

したがって、あなたの質問に対する最終的な答えは、同じキーをもたらすmkPbKeyとGetMultiの両方を通るパスを見つけることによって決まります。 JavaにString型のキーを与え、長さが250未満の場合は、Goの前後にキーを置くことを忘れないでください。 (しかし、mkPbKeyを読むことで、200のコードポイントを持つ文字列にどのように反応するのだろうか?UTF-8でマルチバイトのエンコーディングが行われるようになる。

+0

あなたが正しいです、Goキーで引用符を使用すると、Javaで書かれた文字列にアクセスできます。 Memcache Viewerを使用して、["a"、abc]の[key、value]を持つGoエントリを作成すると、[key] = [a]を使用してJava Stringとして読み取ることができました。私はまだコードでそれをテストする必要があります、ありがとう。 –

関連する問題