ThinkJS Cache(緩存)

2021-09-17 10:26 更新

在項目中,合理使用緩存對性能有很大的幫助。ThinkJS 提供了多種的緩存方式,包括:內(nèi)存緩存、文件緩存、Memcache 緩存、Redis 緩存等。

緩存類型

系統(tǒng)默認支持的緩存類型如下:

  • base 內(nèi)存緩存
  • file 文件緩存
  • memcache Memcache 緩存
  • redis Redis 緩存

如果使用 memcache 緩存,需要設(shè)置 Memcache 配置信息,見 配置。

如果使用 redis 緩存,需要設(shè)置 Redis 配置信息,見 配置。

緩存配置

默認緩存配置如下,可以在配置文件 src/common/config/cache.js 中進行修改:

export default {
  type: "file", //緩存類型
  timeout: 6 * 3600, //失效時間,默認為 6 個小時
  prefix: "thinkjs_",
  path: runtimePrefix + "/cache",
  path_depth: 2,
  file_ext: ".json"
};

其中 prefix 在 memcache 和 redis 類型中使用,存儲時會將緩存 key + prefix 作為新的 key 來存儲,用于防止跟其他地方使用的緩存 key 沖突。如果不想設(shè)置 prefix,可以將 prefix 設(shè)置為空字符串,如:

export default {
  prefix: "" //將緩存 key 前綴設(shè)置為空
}

其中 pathpath_depth 和 file_ext 配置在 file 類型中使用:

  • path 緩存文件的根目錄
  • path_depth 緩存文件生成子目錄的深度
  • file_ext 緩存文件的擴展名

使用緩存

可以通過 think.cache 方法對緩存進行增刪改查操作,具體請見 API -> think

如果當(dāng)前使用場景在繼承自 think.http.base 的類下,可以通過 this.cache 方法來操作緩存,具體請見 API -> think.http.base。

擴展緩存

可以通過下面的命令創(chuàng)建一個名為 foo 緩存類:

thinkjs adapter cache/foo

執(zhí)行完成后,會創(chuàng)建文件 src/common/adapter/cache/foo.js。擴展緩存類需要實現(xiàn)如下的方法:

export default class extends think.cache.base {
  /**
   * 初始化方法
   * @param  {Object} options []
   * @return {}         []
   */
  init(options){
    //set gc type & start gc
    this.gcType = "cache_foo";
    think.gc(this);
  }
  /**
   * 獲取緩存
   * @param  {String} name []
   * @return {Promise}      []
   */
  get(name){

  }
  /**
   * 設(shè)置緩存
   * @param {String} name    []
   * @param {Mixed} value   []
   * @param {Number} timeout []
   * @return {Promise}
   */
  set(name, value, timeout){

  }
  /**
   * 刪除緩存
   * @param  {String} name []
   * @return {Promise}      []
   */
  delete(name){

  }
  /**
   * 緩存垃圾回收
   * @return {Promise} []
   */
  gc(){

  }
}

框架里的 Cache 實現(xiàn)請見 https://github.com/75team/thinkjs/tree/master/src/adapter/cache。

使用第三方緩存 Adapter

如何使用第三方的緩存 Adapter 請參見 Adapter -> 介紹

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號