APIリファレンス
Accelerate APIリファレンスドキュメントは、次のスキーマに基づいています。
model User {
id Int @id @default(autoincrement())
name String?
email String @unique
}
すべての例は、User
モデルに基づいています。
cacheStrategy
Prisma ClientのAccelerate拡張機能を使用すると、モデルクエリにcacheStrategy
パラメータを使用し、ttl
およびswr
パラメータを使用して、Accelerateのキャッシュ戦略を定義できます。Accelerate拡張機能を使用するには、Prisma Clientバージョン4.10.0
をインストールする必要があります。
オプション
cacheStrategy
パラメータは、次のキーを持つオプションを受け取ります。
オプション | 例 | タイプ | 必須 | 説明 |
---|---|---|---|---|
swr | 60 | Int | いいえ | 秒単位のstale-while-revalidate時間。 |
ttl | 60 | Int | いいえ | 秒単位のtime-to-live時間。 |
tags | ["user"] | String[] | いいえ | tag は、アプリケーション内の特定のクエリの無効化を制御するための変数として機能します。キャッシュを無効化するためのオプションの文字列配列であり、各タグには英数字とアンダースコアのみを含み、最大長は64文字です。 |
例
クエリにキャッシュ戦略を追加し、60秒のstale-while-revalidate(SWR)値、60秒のtime-to-live(TTL)値、および"emails_with_alice"
のキャッシュタグを定義します。
await prisma.user.findMany({
where: {
email: {
contains: "alice@prisma.io",
},
},
cacheStrategy: {
swr: 60,
ttl: 60,
tags: ["emails_with_alice"],
},
});
サポートされているPrisma Clientオペレーション
以下は、cacheStrategy
をサポートするすべての読み取りクエリオペレーションのリストです。
findUnique()
findUniqueOrThrow()
findFirst()
findFirstOrThrow()
findMany()
count()
aggregate()
groupBy()
cacheStrategy
パラメータは、create()
などの書き込みオペレーションではサポートされていません。
withAccelerateInfo
cacheStrategy
をサポートするすべてのクエリは、レスポンスデータをラップし、Accelerateレスポンスに関する追加情報を含めるためにwithAccelerateInfo()
を追加できます。
レスポンスのステータスを取得するには、次を使用します。
const { data, info } = await prisma.user
.count({
cacheStrategy: { ttl: 60, swr: 600 },
where: { myField: 'value' },
})
.withAccelerateInfo()
console.dir(info)
レスポンスオブジェクトのinfo
プロパティに注意してください。ここにリクエスト情報が格納されています。
戻り値の型
info
オブジェクトはAccelerateInfo
型であり、以下のインターフェースに従います。
interface AccelerateInfo {
cacheStatus: 'ttl' | 'swr' | 'miss' | 'none'
lastModified: Date
region: string
requestId: string
signature: string
}
プロパティ | タイプ | 説明 |
---|---|---|
cacheStatus | "ttl" | "swr" | "miss" | "none" | レスポンスのキャッシュステータス。
|
lastModified | Date | レスポンスが最後にリフレッシュされた日付。 |
region | String | リクエストを受信したデータセンターリージョン。 |
requestId | String | リクエストの一意の識別子。トラブルシューティングに役立ちます。 |
signature | String | Prismaオペレーションの一意の署名。 |
$accelerate.invalidate
$accelerate.invalidate
APIを使用してキャッシュを無効化できます。
オンデマンドでキャッシュされたクエリ結果を無効化するには、有料プランが必要です。各プランには、1日に許可されるキャッシュタグベースの無効化の数に特定の制限がありますが、$accelerate.invalidate
API自体を呼び出すことに制限はありません。詳細については、料金ページをご覧ください。
例
以下のクエリを無効化するには
await prisma.user.findMany({
where: {
email: {
contains: "alice@prisma.io",
},
},
cacheStrategy: {
swr: 60,
ttl: 60,
tags: ["emails_with_alice"],
},
});
$accelerate.invalidate
APIでキャッシュタグを提供する必要があります。
try {
await prisma.$accelerate.invalidate({
tags: ["emails_with_alice"],
});
} catch (e) {
if (e instanceof Prisma.PrismaClientKnownRequestError) {
// The .code property can be accessed in a type-safe manner
if (e.code === "P6003") {
console.log(
"The cache invalidation rate limit has been reached. Please try again later."
);
}
}
throw e;
}
1回の呼び出しで最大5つのタグを無効化できます。
$accelerate.invalidateAll
$accelerate.invalidateAll
APIを使用して、キャッシュ全体を無効化できます。
例
以下のクエリを無効化するには
await prisma.user.findMany({
where: {
email: {
contains: "alice@prisma.io",
},
},
cacheStrategy: {
swr: 60,
ttl: 60,
tags: ["emails_with_alice"],
},
});
$accelerate.invalidateAll
APIを呼び出すだけです。
try {
await prisma.$accelerate.invalidateAll();
} catch (e) {
if (e instanceof Prisma.PrismaClientKnownRequestError) {
if (e.code === "P6003") {
console.log(
"The cache invalidation rate limit has been reached. Please try again later."
);
}
}
throw e;
}
$accelerate.invalidateAll
を使用する理由
このメソッドは、invalidate("all")
などの代替手段よりも優れたエディターサポート(IntelliSenseなど)を提供します。
これは環境全体のキャッシュをクリアします。注意して使用してください。
エラー
Prisma Accelerate関連のエラーは、P6xxx
で始まります。
Prisma Accelerateの完全なエラーコードリファレンスは、こちらをご覧ください。