2016-06-24 6 views
1

goを使用してコマンドラインユーティリティを作成しています。これは特定のサーバーにデータを要求し、JSON応答でサーバーからデータを取得します。ユーティリティーは、複数の製品に対して複数の要求を行うことができます。 私は複数のリクエストを行い、各製品のレスポンスをJSON形式で適切に取得できます。 結果をキャッシュファイルまたはローカルファイルにローカルに保存します。どのリクエストでも、サーバーにリクエストを送信する前にローカルキャッシュをチェックします。その製品にデータがある場合、要求は送信されません。golangで永続キャッシュを行う方法は?

jsonレスポンス全体をキャッシュまたはローカルファイルに保存し、そのデータをサーバーに要求する前に毎回そのデータを保持します。

ユースケース: 製品{ "A"、 "B"、 "C"、 "D"、 "E"}これは製品 試験1の任意の数とすることができる:A、B、C ための取得データデータが利用可能であるかどうか、または要求を行うかどうかをローカルストレージでチェックします 各製品のストレージにjson要求を保存します。

だから試験1のために、それはのようなエントリを有することになる。 [{テスト1:[{製品A:JSONレスポンス}、{製品B:JSONレスポンス}、{生成物C:JSONレスポンス}]}]

2つの製品のテストが失敗し、2つの製品の結果が得られた場合は、2つの製品の応答を保存し、テストを再度実施すると3番目の製品のみの結果が得られます。

答えて

0

Mapにデータを保存し、Keyで取得したり、go-cacheなどのプラグインを実装したりすることができます。
透過HTTPキャッシングを行うに行くライブラリの束がありますあなたが行く

+0

go-cacheを使用してキャッシュにファイルを保存するにはどうすればいいですか?結果を保存してファイルからキャッシュを取得する例はありません – rohan

+0

go-cacheを使用してメモリに保存することができます。ファイルに保存したい場合は、Redis – Tinwor

+0

を使用することをお勧めします。Redisは独自のサーバーまたはインストールも必要ですか? 他の言語でも必要なので、申し訳ありませんが、私はゴランには初めてです。 ツールはコマンドラインとなり、システムに構築できる単一のgoファイルとしてユーザーに配布されます。 ツールに必要な追加のインストールを避けようとしています。マップオブジェクトをファイルにローカルに格納し、ファイルのみを読み書きするのはどれくらい良いでしょうか。 ありがとうございます – rohan

1

用のドライバを見つけることができますhere、あなたがデータを格納するためのRedisを使用することができます代わりに。

一番好きな1にあなたを選択して、より良いあなたのニーズを満たす、両方のは、あなたが本当の高速を始めるために彼らのREADMEの例を持っています。

何らかの理由であなたがまたはたいこの回答ゴーの標準ライブラリにhttputil.DumpResponsehttp.ReadResponse、両方を使用しても回答はあなたがベースできる実装例を提供https://stackoverflow.com/a/32885209/322221をチェックアウトするサードパーティ製のライブラリを使用していないことができない場合は、あなたの上で働く。

+0

結果をファイルに保存し、必要に応じて取得して解析することは可能ですか? – rohan

+0

はい、可能です。例:https:// github。com/gregjones/httpcacheはすぐに複数のバックエンドを提供します。例えば、diskcacheとmemcacheがあります。 – toqueteos

+0

これは一歩前進し、自動的にキャッシングを行います。あなたは物事を保存する場所を伝えてから、通常のhttp呼び出しを実行します。 – toqueteos

関連する問題