✨
Momento Cache Control APIs
API reference for Momento Cache (Control APIs)
API reference for Momento Cacheに掲載されている
Control APIsに関するメモです。
Momento CacheのAPIには種類がある
Momento CacheのAPIには主に3種類のAPIが存在します。
- Control
- Data
- Time to Live
他にも認証用のAPIや特定のデータ型を操作するAPIがあります。
今回は基本となるControl APIsについて解説します。
Control APIsでは何ができるのか
Control APIsではキャッシュの操作ができます。キャッシュに対する操作には4つのメソッドがあります。
メソッド | 操作内容 |
---|---|
Create | Momento Cache上にキャッシュを作成する |
Delete | Momento Cache上のキャッシュを削除する |
List | Momento Cache上のキャッシュ一覧を表示する |
Flush | Momento Cache上にキャッシュされたデータを削除する(初期化するに等しい) |
事前に準備するもの
- Momentoの
MOMENTO_API_KEY
- 各言語のパッケージにおけるMomentoのSDK
- 今回はNode.jsを利用、Momento Web SDKは使いません
Create cache
Momento Cache上にキャッシュを作成します。
import { CacheClient, CreateCache, ListCaches, Configurations, CredentialProvider } from '@gomomento/sdk';
async function momento_create_cache(cache_name, cache_client) {
const result = await cache_client.createCache(cache_name);
if (result instanceof CreateCache.Success) {
console.log("Cache 'test-cache' created");
} else if (result instanceof CreateCache.AlreadyExists) {
console.log("Cache 'test-cache' already exists");
} else if (result instanceof CreateCache.Error) {
throw new Error(
`An error occurred while attempting to create cache 'test-cache': ${result.errorCode()}: ${result.toString()}`
);
}
}
async function momento_list_caches(cache_client) {
const result = await cache_client.listCaches();
if (result instanceof ListCaches.Success) {
console.log(
`Caches:\n${result
.getCaches()
.map(c => c.getName())
.join('\n')}\n\n`
);
} else if (result instanceof ListCaches.Error) {
throw new Error(`An error occurred while attempting to list caches: ${result.errorCode()}: ${result.toString()}`);
}
}
export default function main() {
const cache_name = 'test-cache';
const cache_client = new CacheClient({
configuration: Configurations.Laptop.v1(),
defaultTtlSeconds: 60,
credentialProvider: CredentialProvider.fromEnvironmentVariable({
environmentVariableName: 'MOMENTO_API_KEY',
}),
});
momento_create_cache(cache_name, cache_client);
momento_list_caches(cache_client);
}
main();
Create cacheメソッドは存在するかしないか、エラーかの3つに結果が分かれます。
Delete cache
Momento Cache上のキャッシュを削除します。
import { CacheClient, CreateCache, ListCaches, DeleteCache, Configurations, CredentialProvider } from '@gomomento/sdk';
async function momento_create_cache(cache_name, cache_client) {
const result = await cache_client.createCache(cache_name);
if (result instanceof CreateCache.Success) {
console.log("Cache 'test-cache' created");
} else if (result instanceof CreateCache.AlreadyExists) {
console.log("Cache 'test-cache' already exists");
} else if (result instanceof CreateCache.Error) {
throw new Error(
`An error occurred while attempting to create cache 'test-cache': ${result.errorCode()}: ${result.toString()}`
);
}
}
async function momento_list_caches(cache_client) {
const result = await cache_client.listCaches();
if (result instanceof ListCaches.Success) {
console.log(
`Caches:\n${result
.getCaches()
.map(c => c.getName())
.join('\n')}\n\n`
);
} else if (result instanceof ListCaches.Error) {
throw new Error(`An error occurred while attempting to list caches: ${result.errorCode()}: ${result.toString()}`);
}
}
async function momento_delete_cache(cache_name, cache_client) {
const result = await cache_client.deleteCache(cache_name);
if (result instanceof DeleteCache.Success) {
console.log("Cache" + cache_name + " deleted");
} else if (result instanceof DeleteCache.Error) {
throw new Error(
`An error occurred while attempting to delete cache : ${result.errorCode()}: ${result.toString()}`
);
}
}
export default function main() {
const cache_name = 'test-cache';
const cache_client = new CacheClient({
configuration: Configurations.Laptop.v1(),
defaultTtlSeconds: 60,
credentialProvider: CredentialProvider.fromEnvironmentVariable({
environmentVariableName: 'MOMENTO_API_KEY',
}),
});
momento_create_cache(cache_name, cache_client);
momento_list_caches(cache_client);
momento_delete_cache(cache_name, cache_client);
momento_list_caches(cache_client);
}
main();
Delete cacheメソッドはキャッシュが存在する場合は削除し、存在しない場合はエラーが発生します。
List caches
Momento Cache上のキャッシュ一覧を表示します。
import { CacheClient, CreateCache, ListCaches, Configurations, CredentialProvider } from '@gomomento/sdk';
async function momento_create_cache(cache_name, cache_client) {
const result = await cache_client.createCache(cache_name);
if (result instanceof CreateCache.Success) {
console.log("Cache 'test-cache' created");
} else if (result instanceof CreateCache.AlreadyExists) {
console.log("Cache 'test-cache' already exists");
} else if (result instanceof CreateCache.Error) {
throw new Error(
`An error occurred while attempting to create cache 'test-cache': ${result.errorCode()}: ${result.toString()}`
);
}
}
async function momento_list_caches(cache_client) {
const result = await cache_client.listCaches();
if (result instanceof ListCaches.Success) {
console.log(
`Caches:\n${result
.getCaches()
.map(c => c.getName())
.join('\n')}\n\n`
);
} else if (result instanceof ListCaches.Error) {
throw new Error(`An error occurred while attempting to list caches: ${result.errorCode()}: ${result.toString()}`);
}
}
export default function main() {
const cache_name = 'test-cache';
const cache_client = new CacheClient({
configuration: Configurations.Laptop.v1(),
defaultTtlSeconds: 60,
credentialProvider: CredentialProvider.fromEnvironmentVariable({
environmentVariableName: 'MOMENTO_API_KEY',
}),
});
momento_create_cache(cache_name, cache_client);
momento_list_caches(cache_client);
}
main();
List cacheメソッドはキャッシュが存在する場合はリストを取得し、存在しない場合はエラーが発生します。
Flush cache
Momento Cache上のキャッシュされたデータを削除します。初期化のイメージに近い処理です。
import { CacheClient, CreateCache, CacheFlush, Configurations, CredentialProvider } from '@gomomento/sdk';
async function momento_create_cache(cache_name, cache_client) {
const result = await cache_client.createCache(cache_name);
if (result instanceof CreateCache.Success) {
console.log("Cache 'test-cache' created");
} else if (result instanceof CreateCache.AlreadyExists) {
console.log("Cache 'test-cache' already exists");
} else if (result instanceof CreateCache.Error) {
throw new Error(
`An error occurred while attempting to create cache 'test-cache': ${result.errorCode()}: ${result.toString()}`
);
}
}
async function momento_flush_cache(cache_name, cache_client) {
const result = await cache_client.flushCache(cache_name);
if (result instanceof CacheFlush.Success) {
console.log("Cache 'test-cache' flushed");
} else if (result instanceof CacheFlush.Error) {
throw new Error(
`An error occurred while attempting to flush cache 'test-cache': ${result.errorCode()}: ${result.toString()}`
);
}
}
export default function main() {
const cache_name = 'test-cache';
const cache_client = new CacheClient({
configuration: Configurations.Laptop.v1(),
defaultTtlSeconds: 60,
credentialProvider: CredentialProvider.fromEnvironmentVariable({
environmentVariableName: 'MOMENTO_API_KEY',
}),
});
momento_create_cache(cache_name, cache_client);
momento_flush_cache(cache_name, cache_client);
}
main();
Discussion