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

Momento Rust SDKの非同期API、設定、エラー処理、結果型

非同期API

SDKのすべてのAPIは非同期で、Futureを返します。つまり tokioを推奨します。この依存関係を含む例 #[tokio::main]の使い方を説明するサンプルは github repo の example ディレクトリ にあります。

構成

タイムアウトやキープアライブなどの設定を、さまざまな環境で適切な値に調整できるよう、あらかじめビルドされたコンフィギュレーションが用意されており、 環境に応じて適切な値に調整することができます。例えば

  • momento::cache::configurations::Laptop::latest() - タイムアウトが緩やかな開発環境に適している s
  • momento::cache::configurations::InRegion::latest() - より厳格なタイムアウトがある本番環境での設定に適している

これらの設定は CacheClient ビルダと TopicClient ビルダに渡すことができます。 高度な使用例では、プリビルドを使用するのではなく、独自の設定を構築することができます。

Credential Providers

CredentialProvider 構造体は、Momento サービスの API キーを提供するために使用します。クレデンシャルプロバイダを作成するための 最も一般的な CredentialProvider を作成するファクトリ関数は次の 2 つです:

  • CredentialProvider::from_env_var - 環境変数からAPIキーを読み込む
  • CredentialProvider::from_string - APIキーを文字列として受け取ります。 クレットマネージャーなどからキーを取得する際に使用できます。

エラー処理

ほとんどのAPIは MomentoResult を返しますが、これは Result<T, MomentoError> の型エイリアスです。これは Result<T, MomentoError> の型の別名に過ぎません。 match ステートメントを使って Result を処理したり、 ? 演算子を使ってエラーを伝搬させたりすることができます。

Enum Response Types, Type Coercion via into and try_into

多くの API では、返されるレスポンスの型が複数ある場合があります。例えば、CacheClient::get はキャッシュヒットまたはキャッシュミスを返します。 これらのレスポンスは列挙型として表現されます。 あるいは、try_into を使用して、レスポンスを希望の型に直接強制することもできます。

すべての Momento キャッシュの値は vec<u8> として保存されますが、UTF-8 文字列を使用している場合は、これらの強制子に対しても try_into を使用できます。

以下は、CacheClient::get レスポンスをどのように扱うかの例です:

Using a match:

  let _item: String = match cache_client.get(cache_name, "key").await? {
GetResponse::Hit { value } => value.try_into()?,
GetResponse::Miss => return Err(anyhow::Error::msg("cache miss"))
};

Or directly via try_into:

  let _item: String = cache_client.get(cache_name, "key").await?.try_into()?;

リストや辞書のような Momento コレクションのデータ型を使用している場合、これらのデータ型を表現するために使用できると期待される主な Rust 型の into をサポートしています。 例えば、Momento 辞書では以下のようになります。

  let _item: HashMap<String, String> = cache_client
.dictionary_fetch(cache_name, "dictionary_key")
.await?
.try_into()?;