【TypeScript】node-cacheを使ったChacheサービス実装

ヘッドレスCMSのContenftulでデータ管理をしてNext.jsでレンダリングしようとした時に、API Limitを考慮するためにChacheを導入した。

他サーバーと共通にするまでもなかったので、Redisではなくnode-cacheを導入した。

install package.

node-cacheをインストールします。

npm install node-cache --save

code

シングルトンのようにしたかったのでstaticでクラスインスタンスを持ち、

private static instance: NodeCache;

constructorでnewすることで持ち回るようにしています。

  constructor() {
    if (typeof CacheService.instance === "undefined") {
      CacheService.instance = new NodeCache();
    }
  }

あとは、get、set、必要に応じてキャッシュ削除などのロジックを組み込みます。
setの第3引数はttlをsecondsで指定できるので、自動でキャッシュ削除したい時は設定します。

import NodeCache from "node-cache";

class CacheService {
  private static instance: NodeCache;

  constructor() {
    if (typeof CacheService.instance === "undefined") {
      CacheService.instance = new NodeCache();
    }
  }

  set(key: string, value: any) {
    CacheService.instance.set(key, value, 60);
  }

  get(key: string) {
    const value = CacheService.instance.get(key);
    if (value === "undefined") {
      return null;
    }
    return value;
  }

  del(keys: string[]) {
    CacheService.instance.del(keys);
  }

  getKeys() {
    return CacheService.instance.keys();
  }
}

export default new CacheService();
よかったらシェアしてね!
目次