このドキュメントはAIによって翻訳されました。不正確な情報については、英語版をご参照ください
キャッシュ
NocoBaseのキャッシュモジュールは、node-cache-managerをベースに構築されており、プラグイン開発にキャッシュ機能を提供します。システムには以下の2種類のキャッシュが組み込まれています。
- memory -
lru-cacheをベースにしたインメモリキャッシュで、node-cache-managerによってデフォルトで提供されます。 - redis -
node-cache-manager-redis-yetをベースにしたRedisキャッシュです。
さらに多くのキャッシュタイプは、APIを通じて拡張・登録することが可能です。
基本的な使い方
app.cache
app.cacheは、アプリケーションレベルのデフォルトキャッシュインスタンスで、そのまま利用できます。
ctx.cache
ミドルウェアやリソース操作では、ctx.cacheを通じてキャッシュにアクセスできます。
カスタムキャッシュの作成
もし、独立したキャッシュインスタンス(例えば、異なる名前空間や設定を持つもの)を作成する必要がある場合は、app.cacheManager.createCache()メソッドを利用できます。
createCache パラメータの説明
作成済みのキャッシュを取得
キャッシュの基本的なメソッド
キャッシュインスタンスは、豊富なキャッシュ操作メソッドを提供しており、そのほとんどはnode-cache-managerから継承されています。
get / set
del / reset
wrap
wrap()メソッドは非常に便利なツールです。まずキャッシュからデータを取得しようとし、キャッシュミスが発生した場合は関数を実行してその結果をキャッシュに保存します。
バッチ操作
keys / ttl
高度な使い方
wrapWithCondition
wrapWithCondition()はwrap()に似ていますが、条件に基づいてキャッシュを使用するかどうかを決定できます。
オブジェクトキャッシュ操作
キャッシュされたコンテンツがオブジェクトの場合、以下のメソッドを使用して、オブジェクト全体を取得することなく、そのプロパティを直接操作できます。
カスタムストアの登録
MemcachedやMongoDBなどの他のキャッシュタイプを使用する必要がある場合は、app.cacheManager.registerStore()を通じて登録できます。
注意事項
- メモリキャッシュの制限:
memoryストアを使用する際は、メモリオーバーフローを避けるため、maxパラメータを適切に設定してください。 - キャッシュ無効化戦略:データを更新する際は、関連するキャッシュを忘れずにクリアし、古いデータ(ダーティデータ)が残らないようにしてください。
- キーの命名規則:
module:resource:idのように、意味のある名前空間とプレフィックスを使用することをお勧めします。 - TTLの設定:データの更新頻度に応じてTTLを適切に設定し、パフォーマンスと一貫性のバランスを取ってください。
- Redis接続:Redisを使用する際は、本番環境で接続パラメータとパスワードが正しく設定されていることを確認してください。

