私はいくつかの Go Web サービスを作成しています (また、http.ListenAndServe を使用して Go で Web サーバーを実装しています)。さまざまな HTTP リクエストで使用するためにメモリに保持したい構造体のマップがあります (おおよそのデータ サイズは 100Kb)。
Goでこれをどのように達成できますか? グローバル パッケージ変数またはキャッシュ システム (memcache/groupcache など) を使用することを考えています。
私はいくつかの Go Web サービスを作成しています (また、http.ListenAndServe を使用して Go で Web サーバーを実装しています)。さまざまな HTTP リクエストで使用するためにメモリに保持したい構造体のマップがあります (おおよそのデータ サイズは 100Kb)。
Goでこれをどのように達成できますか? グローバル パッケージ変数またはキャッシュ システム (memcache/groupcache など) を使用することを考えています。
時期尚早の最適化に夢中にならないでください。データをカプセル化する Go パッケージ API を定義すると、いつでも実装を変更できます。例えばただの落書き、
package data
type Key struct {
// . . .
}
type Data struct {
// . . .
}
var dataMap map[Key]Data
func init() {
dataMap = make(map[Key]Data)
}
func GetData(key Key) (*Data, error) {
data := dataMap[key]
return &data, nil
}