From 8828f37b5711dffa81883280099902c9d4e76afb Mon Sep 17 00:00:00 2001 From: Hazelnoot Date: Wed, 1 Oct 2025 11:31:35 -0400 Subject: [PATCH] add clear() / dispose() methods to memory caches --- packages/backend/src/misc/cache.ts | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/packages/backend/src/misc/cache.ts b/packages/backend/src/misc/cache.ts index 56fc94f5ac..f18838033b 100644 --- a/packages/backend/src/misc/cache.ts +++ b/packages/backend/src/misc/cache.ts @@ -180,6 +180,11 @@ export class RedisSingleCache { await this.redisClient.del(`singlecache:${this.name}`); } + @bindThis + public clear(): void { + this.memoryCache.delete(); + } + /** * キャッシュがあればそれを返し、無ければfetcherを呼び出して結果をキャッシュ&返します * This awaits the call to Redis to ensure that the write succeeded, which is important for a few reasons: @@ -208,6 +213,12 @@ export class RedisSingleCache { // TODO: イベント発行して他プロセスのメモリキャッシュも更新できるようにする } + + @bindThis + public dispose(): void { + this.clear(); + } +} } // TODO: メモリ節約のためあまり参照されないキーを定期的に削除できるようにする? @@ -378,6 +389,11 @@ export class MemorySingleCache { this.cachedAt = null; } + @bindThis + public clear() { + this.delete(); + } + /** * キャッシュがあればそれを返し、無ければfetcherを呼び出して結果をキャッシュ&返します * optional: キャッシュが存在してもvalidatorでfalseを返すとキャッシュ無効扱いにします @@ -429,4 +445,9 @@ export class MemorySingleCache { } return value; } + + @bindThis + public dispose() { + this.clear(); + } }