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

JavaでMomento Storageを始める

JavaとMomento Storageをすぐに使い始める必要がある場合、このページには必要な基本的なAPIコールが含まれています。ビルド設定ファイルを含む完全で実用的な例については、Java SDK の例 を確認してください。

Install the Momento SDK

Momento SDKはMaven Centralで入手できます。: `software.momento.java/sdkにあります。

ヒント

Maven Centralにアクセスして、SDKの最新バージョンを見つけてください。

既存のJavaプロジェクトにクライアント・ライブラリをインストールする:

Gradle

implementation("software.momento.java:sdk:1.x.x")

Maven

<dependency>
<groupId>software.momento.java</groupId>
<artifactId>sdk</artifactId>
<version>1.x.x</version>
</dependency>

APIキーの設定

Momentoで認証するには、Momento APIキーが必要です。 Momento Web Console](https://console.gomomento.com/api-keys)から取得できます。 トークンを取得したら、Momentoクライアントが利用できるように環境変数に保存してください:

export MOMENTO_API_KEY=<your Momento API key here>

ライブラリをインポートして接続し、StorageClientオブジェクトを返す

このコードでは、メイン関数、必要なインポート、他の各関数が呼び出す必要のあるStorageClientインスタンス化を設定します。

package momento.client.example.doc_examples;

import momento.sdk.PreviewStorageClient;
import momento.sdk.auth.CredentialProvider;
import momento.sdk.config.StorageConfigurations;

public class CheatSheet {
public static void main(String[] args) {
try (final var storageClient =
new PreviewStorageClient(
CredentialProvider.fromEnvVar("MOMENTO_API_KEY"),
StorageConfigurations.Laptop.latest())) {
// ...
}
}
}

Momento Storageに新しいストアを作成する。

この機能を使用して、アカウントに新しいストアを作成します。

final CreateStoreResponse response = storageClient.createStore("test-store").join();
if (response instanceof CreateStoreResponse.Success) {
System.out.println("Store 'test-store' created");
} else if (response instanceof CreateStoreResponse.Error error) {
if (error.getCause() instanceof StoreAlreadyExistsException) {
System.out.println("Store 'test-store' already exists");
} else {
throw new RuntimeException(
"An error occurred while attempting to create store 'test-store': "
+ error.getErrorCode(),
error);
}
}

あなたのアカウントにある既存のストアの名前をリストアップします。

アカウントのストア名の単純なリスト。

final ListStoresResponse response = storageClient.listStores().join();
if (response instanceof ListStoresResponse.Success success) {
final String stores =
success.getStores().stream().map(StoreInfo::getName).collect(Collectors.joining("\n"));
System.out.println("Stores:\n" + stores);
} else if (response instanceof ListStoresResponse.Error error) {
throw new RuntimeException(
"An error occurred while attempting to list stores: " + error.getErrorCode(), error);
}

ストアにアイテムを書き込む。

プット操作の簡単な例。

// this example illustrates how to store a String value
final PutResponse response = storageClient.put("test-store", "test-key", "test-value").join();
if (response instanceof PutResponse.Success) {
System.out.println("Key 'test-key' stored successfully");
} else if (response instanceof PutResponse.Error error) {
throw new RuntimeException(
"An error occurred while attempting to store key 'test-key' in store 'test-store': "
+ error.getErrorCode(),
error);
}

// Momento Storage also supports storing values of type byte[], long, and double:
byte[] bytesValue = "test-byte-array-value".getBytes(StandardCharsets.UTF_8);
storageClient.put("test-store", "test-byte-array-key", bytesValue).join();
storageClient.put("test-store", "test-integer-key", 42L).join();
storageClient.put("test-store", "test-double-key", 42.0).join();

ストアのアイテムを読み込む。

これは、ストアからアイテムを取得する単純な読み取り操作の例です。

final GetResponse response = storageClient.get("test-store", "test-key").join();

// simplified style to access the value, if you're confident the value exists and you know the
// type.
// The optionals in this chain will throw exceptions when you call `.get()` if the item did not
// exist in the store, or is another type besides a String
final String value = response.valueWhenFound().get().getString().get();

// Or, you can use pattern-matching for more production-safe code:
if (response instanceof GetResponse.Found found) {
// if you know the value is a String:
String stringValue =
found
.value()
.getString()
.orElseThrow(() -> new RuntimeException("Value was not a String!"));
// if you don't know the type of the value:
switch (found.value().getType()) {
case STRING -> System.out.println("String value: " + found.value().getString().get());
case BYTE_ARRAY -> System.out.println(
"Byte array value: " + found.value().getByteArray().get());
case LONG -> System.out.println("Long value: " + found.value().getLong().get());
case DOUBLE -> System.out.println("Double value: " + found.value().getDouble().get());
}
} else if (response instanceof GetResponse.NotFound) {
System.out.println("Key 'test-key' was not found in store 'test-store'");
} else if (response instanceof GetResponse.Error error) {
throw new RuntimeException(
"An error occurred while attempting to get key 'test-key' from store 'test-store': "
+ error.getErrorCode(),
error);
}

コードの実行。

Java SDK github repo examples directoryに完全な動作例があります。

備考

これらの基本的なAPIコール以外のMomento APIコールの詳細については、APIリファレンスページをチェックしてください。