Skip to content

キャッシュ ​

Cache はデータベース全体または 1 つの Model に設定できます。コアは Cache 契約を定義し、具体的な Adapter が読み取り、補完、無効化の経路を実装します。

typescript
const cache = new MemcachedCache('127.0.0.1:11211', { prefix: 'app:' });
const database = new Toshihiko('mysql', { cache, database: 'app' });

const CachedUser = database.define('users', userSchema);
const UncachedAudit = database.define('audit', auditSchema, { cache: false });

Model はデータベース Cache を継承し、別のインスタンスで置換するか、false または null で無効化できます。

Cache 契約 ​

メソッド役割
getData(database, table, keys)1 件以上の行を取得。
setData(database, table, key, data)1 行を保存。
deleteData(database, table, key)1 キーを削除。
deleteKeys(database, table, keys)複数キーを削除。

複数取得は入力順を維持し、miss を null で表します。

読み取りと無効化 ​

findById() は主キー条件で Cache を先に確認し、hit を検索済み Yukari に復元します。miss の場合は Adapter へ進みます。find({ noCache: true }) はその検索だけ Cache 読み取りを迂回します。

MySQL Adapter は更新と削除の前に関連する主キーを無効化します。Cache 読み取りエラーは findById() では miss として扱い、データベース処理を継続します。

Redis と Memcached は同じ契約を実装しながら、クライアント設定、バッチ、イベント、キー形式を維持します。Memcached は setCustomizeKeyFunc() で既存キー形式に対応できます。

Released under the MIT License.