Introduction
DevelopersIOで何度か紹介している、
高速キャッシュサービスMomento Serverless Cache(以下Momento)のネタです。
しばらくJavascriptのSDKをバージョンアップせず使用していたのですが、
先日アップデートしたらAPIが少し変わっていました。
Environment
今回試した環境は以下のとおりです。
- MacBook Pro (13-inch, M1, 2020)
- OS : MacOS 12.4
- Node : v18.2.0
About the Changes
以前のMomentoに対するアクセス方法は↓のような感じでした。
(v0.14のとき)
//main.mjs
import {SimpleCacheClient} from '@gomomento/sdk';
// 認証トークンを設定
const AUTH_TOKEN = process.env.MOMENTO_AUTH_TOKEN;
// momentoクライアント初期化
const momento = new SimpleCacheClient(AUTH_TOKEN, 60);
const CACHE_NAME = 'myCache';
// キャッシュset
const setResult = await momento.set(CACHE_NAME, 'key_ts', 'value_ts');
console.log(`setResult:${setResult.text()}`);
// キャッシュget
const getResult = await momento.get(CACHE_NAME, 'key_ts');
console.log(`getResult:${getResult.text()}`);
現在の最新版SDK(v0.18)では下記のようになってます。
//main-latest.mjs
import {SimpleCacheClient,CacheSet,CacheGet} from '@gomomento/sdk';
// 認証トークンを設定
const AUTH_TOKEN = process.env.MOMENTO_AUTH_TOKEN;
// momentoクライアント初期化
const momento = new SimpleCacheClient(AUTH_TOKEN, 60);
const CACHE_NAME = 'myCache_latest';
// キャッシュset
const setResult = await momento.set(CACHE_NAME, 'key_ts', 'value_ts');
if (setResult instanceof CacheSet.Success) {
console.log('Set Cache Data successfully with value ' + setResult.valueString());
} else if (setResult instanceof CacheSet.Error) {
console.log('Error Set key: ' + setResult.message());
}
// キャッシュget
const getResult = await momento.get(CACHE_NAME, 'key_ts');
if (getResult instanceof CacheGet.Hit) {
console.log(`getResult:${getResult.valueString()}`);
} else if (getResult instanceof CacheGet.Miss) {
console.log('Cache miss');
} else if (getResult instanceof CacheGet.Error) {
console.log(`Error: ${getResult.message()}`);
}
set/get関数がそれぞれに対応したレスポンス型を返すようになりました。
(CacheSet・CacheGetがそれぞれSuccess/Error型を返す)
そして、そのレスポンス型から実際の値を取り出す関数も変わってます。
(valueString/valueUint8Array)
Summary
SDKを更新した場合、そのままのコードだとエラーになってしまうので
適切に修正しましょう。
この記事でキャッシュに使用したMomentoについてのお問い合わせはこちらです。
お気軽にお問い合わせください。
Momentoセミナーのお知らせ
2023年2月21日(火) 16:00からMomentoのセミナーを開催します。
興味があるかたはぜひご参加ください。