GoでMomentoストレージを始める
GoとMomento Storageをすぐに使い始める必要がある場合、このページには必要な基本的なAPIコールが含まれています。ビルド設定ファイルを含む完全で実用的な例については、Go SDK examples を確認してください。
Momento SDK のインストール
Momento SDKはGoパッケージで入手できます: client-sdk-go
ヒント
Goパッケージにアクセスして、利用可能な最新バージョンのSDKを見つけてください。
既存のGoプロジェクトにクライアント・ライブラリをインストールする:
go get github.com/momentohq/client-sdk-go
APIキーの設定
Momentoで認証するには、Momento APIキーが必要です。 Momento Web Console](https://console.gomomento.com/api-keys)から取得できます。 APIキーを取得したら、Momentoクライアントが利用できるように環境変数に保存してください:
export MOMENTO_API_KEY=<your Momento API key here>
ライブラリをインポートして接続し、StorageClientオブジェクトを返す
このコードでは、メイン関数、必要なインポート、StorageClientを設定します。
package main
import (
"context"
"fmt"
"github.com/momentohq/client-sdk-go/auth"
"github.com/momentohq/client-sdk-go/config"
"github.com/momentohq/client-sdk-go/momento"
)
func main() {
ctx := context.Background()
var credentialProvider, err = auth.NewEnvMomentoTokenProvider("MOMENTO_API_KEY")
if err != nil {
panic(err)
}
client, err := momento.NewPreviewStorageClient(config.StorageLaptopLatest(), credentialProvider)
var storeName = "store-name"
defer func() {
fmt.Println("Deleting store")
_, err = client.DeleteStore(ctx, &momento.DeleteStoreRequest{
StoreName: storeName,
})
if err != nil {
panic(err)
}
}()
// ...
}
Momento Storageに新しいストアを作成する
この機能を使用して、アカウントに新しいストアを作成します。
resp, err := storageClient.CreateStore(ctx, &momento.CreateStoreRequest{
StoreName: storeName,
})
if err != nil {
panic(err)
}
switch resp.(type) {
case *responses.CreateStoreSuccess:
fmt.Printf("Successfully created store %s\n", storeName)
case *responses.CreateStoreAlreadyExists:
fmt.Printf("Store %s already exists\n", storeName)
}
あなたのアカウントにある既存のストアをリストアップする
アカウントの店舗名の単純なリスト。
resp, err := storageClient.ListStores(ctx, &momento.ListStoresRequest{})
if err != nil {
panic(err)
}
switch r := resp.(type) {
case *responses.ListStoresSuccess:
log.Printf("Found stores:\n")
for _, store := range r.Stores() {
log.Printf("\tStore name: %s\n", store.Name())
}
}
ストアに商品を書き込む
Put操作の簡単な例。
_, err := storageClient.Put(ctx, &momento.StoragePutRequest{
StoreName: storeName,
Key: "key",
Value: storageTypes.String("my-value"),
})
if err != nil {
panic(err)
}
// Momento storage also supports these other data types:
storageClient.Put(ctx, &momento.StoragePutRequest{
StoreName: storeName,
Key: "key",
Value: storageTypes.Int(42),
})
storageClient.Put(ctx, &momento.StoragePutRequest{
StoreName: storeName,
Key: "key",
Value: storageTypes.Float(3.14),
})
storageClient.Put(ctx, &momento.StoragePutRequest{
StoreName: storeName,
Key: "key",
Value: storageTypes.Bytes{0x01, 0x02, 0x03},
})
ストアの商品を読む
これは 、ストアから商品を取得する単純な読み取り操作の例です。
getResp, err := storageClient.Get(ctx, &momento.StorageGetRequest{
StoreName: storeName,
Key: "key",
})
if err != nil {
panic(err)
}
// If the value was not found, the response's Value will be nil.
if getResp.Value() == nil {
fmt.Println("Got nil")
}
// If you know the type you're expecting, you can assert it directly:
intVal, ok := getResp.Value().(storageTypes.Int)
if !ok {
fmt.Printf("Not an integer, received type: %T\n", getResp.Value())
} else {
fmt.Printf("Got the integer %d\n", intVal)
}
// Use switch if you don't know the type beforehand:
switch t := getResp.Value().(type) {
case storageTypes.String:
fmt.Printf("Got the string %s\n", t)
case storageTypes.Bytes:
fmt.Printf("Got the bytes %b\n", t)
case storageTypes.Float:
fmt.Printf("Got the float %f\n", t)
case storageTypes.Int:
fmt.Printf("Got the integer %d\n", t)
case nil:
fmt.Println("Got nil")
}
コードの実行
Go SDK github repo examples directoryに完全な動作例があります。
備考
これらの基本的なAPIコール以外のMomento APIコールの詳細については、APIリファレンスページをチェックしてください。