メインコンテンツまでスキップ

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リファレンスページをチェックしてください。