在 Node.js 中存取快取

您正在查看 Apigee Edge 說明文件。
前往 Apigee X 說明文件
info

您可以使用 apigee-access 模組,從 Node.js 應用程式存取 Edge 分散快取。這個模組包含用於取得快取放入取得移除資料的方法。

Apigee Edge 分散式快取可讓您儲存字串或其他資料。與大多數快取一樣,這是近期最少用到的快取,且有最大大小限制。在 Apigee Edge 中,快取會分散至 Node.js 應用程式執行的所有節點。您可以透過 Apigee Edge API 管理快取。您可以使用 API 手動建立快取資源,也可以使用預設資源。如要瞭解如何在 Apigee Edge 上快取,請參閱 Edge 中的保存工具相關說明。如要進一步瞭解分散快取,請參閱「範例:一般用途快取」。

如要瞭解 apigee-access 模組及其其他功能,請參閱「使用 apigee-access 模組」。

方法


(1) getCache

var cache = apigee.getCache(cacheName);

查詢命名快取,並視需要建立快取。產生的快取會使用適用於大部分情況的預先定義設定參數。

參數:

cacheName - 字串,代表快取的名稱。(不是快取資源的名稱)。

退貨:

快取物件。

範例:

var apigee = require('apigee-access');
var cache = apigee.getCache('cache');

(2) getCache

var customCache = apigee.getCache(cacheName, options );

存取設定物件中指定的自訂快取資源。如要瞭解如何建立快取資源,請參閱「建立及編輯環境快取」一文。

參數:

cacheName - 字串,自訂快取的名稱。(不是快取資源的名稱)

options - 設定物件。這個物件可以是空白,也可以包含下列選用參數:

  • resource:儲存快取資料的 Apigee「快取資源」名稱。快取資源可用於微調記憶體配置和其他快取參數。如未指定,系統會使用預設資源。如果快取資源不存在,則方法會擲回錯誤。

  • scope:指定是否要為快取項目加上前置字串,以免發生衝突。有效值為 globalapplicationexclusive

    • global:所有快取項目都可能會顯示在同一個 Apigee「環境」中的所有 Node.js 應用程式中。

    • application:所有快取項目都有可能屬於同一個 Apigee Edge 應用程式的一部分 Node.js 快取。

    • exclusive:(預設值) 只有同一個應用程式中的 Node.js 快取會看到快取項目。此為預設值。

  • prefix:如果快取鍵名稱包含前置字元 (如「填入快取政策」和「使用快取鍵」一文所述),請使用這個參數指定前置字元。Edge 會自動在前置字串名稱中加入雙底線後置字串。因此,如果快取索引鍵是使用「UserToken」前置字串建立,則此處應指定的字串前置字串為「UserToken__」。

  • defaultTtl:指定快取項目的預設有效時間 (以秒為單位)。如未指定,系統會使用快取資源中的預設 TTL。

  • timeout:從分散快取擷取結果所需的等待時間 (以秒為單位)。預設值是 30 秒。延遲時間敏感的應用程式可能會希望降低此值,以免在快取基礎架構超載時,導致回應時間變慢。

退貨:

自訂快取物件。

範例:

var apigee = require('apigee-access');
var customCache = apigee.getCache('doesNotMatter',
  { resource: 'MyCustomResource', scope: 'global', prefix: 'UserToken'} );
customCache.put("myCacheKey", "xyz");

這與 LookupCache 政策搭配運作,如下所示:

<LookupCache name="Lookup-Cache-1">
  <CacheKey>
    <Prefix>UserToken</prefix>    
    <KeyFragment>myCacheKey</KeyFragment>
  </CacheKey>
  <CacheResource>MyCustomResource</CacheResource>
  <Scope>Global</Scope>
  <AssignTo>contextVariable</AssignTo>
</LookupCache>

put

cache.put('key', data, ttl, function(error));

將資料放入快取。

參數:

  • key:(必填) 用於識別快取中項目的專屬字串。快取鍵的大小上限為 2 KB。

  • data:(必要) 代表快取資料的字串、緩衝區或物件。其他任何資料類型都會導致錯誤。為方便起見,系統會使用「JSON.stringify」將物件轉換為字串。

  • ttl:(選用) 在快取中保留資料的時間上限,以秒為單位。如未指定,系統會使用預設 TTL。

  • callback:(選用) 如果指定此屬性,系統會在資料安全地儲存在快取中時呼叫此函式。如果發生插入錯誤,系統會以 Error 物件做為第一個參數呼叫此方法,否則會以不含參數的方式呼叫。

範例:

var apigee = require('apigee-access');
var cache = apigee.getCache();
// Insert a string into cache using the default TTL
cache.put('key1', 'Buenos dias, Mundo!');
// Insert a string into cache using a TTL of 120 seconds
cache.put('key2', 'Hello, World!', 120);
// Insert a string with the default TTL, and get notified when the insert is complete
cache.put('key3', 'Ciao, Mondo!', function(error) {
  // "error" will be falsy unless there was an error on insert
});
// Insert a string with a TTL of 600 seconds, and get notified when the insert is complete
cache.put('key4', 'Hallo Wereld!', 600, function(error) {
  // "error" will be falsy unless there was an error on insert
});

get

cache.get('key', function(error, data));

從快取中擷取資料。

參數:

  • key (必要):在快取中識別該項目的專屬字串。

    如果快取項目是從 Apigee Edge 政策 (例如Populate Cache policy) 放入快取,您必須根據政策為項目建立索引的特定方式,推斷並建構快取索引。如要這麼做,您必須先瞭解政策的設定方式。雖然「使用快取索引鍵」一文說明瞭政策如何建立快取索引鍵,但請注意,您不應指定與範圍相關的字串值;在 Node.js 的呼叫中,範圍已是內容的一部分。

  • callback (必要):在資料可用時呼叫的函式。如果有快取資料,系統會在第二個參數中傳回該資料。

    • error - 錯誤物件。如果從快取擷取資料時發生錯誤,系統會在此設定 Error 物件。否則,這個參數會設為「undefined」。

    • data - 擷取的資料 (如果有的話)。這個值會是下列四個值之一:

      • 如果插入的是字串,則會是字串。
      • 如果插入緩衝區,則會是緩衝區。
      • 如果已插入物件,這將是包含「JSON.stringify」產生的物件 JSON 版本的字串。
      • 如果找不到,結果會是「未定義」。

範例:

var apigee = require('apigee-access');
var cache = apigee.getCache();
cache.get('key', function(error, data) {
  // If there was an error, then "error" will be set.
  // If error is falsy, "data" is the item that was retrieved:
  //   - undefined, in the case of cache miss, or
  //   - a Buffer, or
  //   - a String
});

移除

cache.remove('key', function(error));

撤銷快取項目。鍵無效後,除非插入其他值,否則後續的 get() 要求會傳回「undefined」。

參數:

  • key (必填):用於識別快取中要失效的項目的專屬字串。

    如果快取項目是從 Apigee Edge 政策 (例如Populate Cache policy) 放入快取,您必須根據政策為項目建立索引的特定方式,推斷並建構快取索引。因此,您必須先瞭解這項政策的設定方式,雖然使用快取金鑰說明瞭如何透過政策建立快取金鑰,但請注意,您不應指定與範圍相關的字串值;在 Node.js 發出的呼叫中,範圍已經是結構定義的一部分。

  • callback (必要):如果發生錯誤,系統會以 Error 物件做為第一個參數呼叫的回呼函式。

範例:

var apigee = require('apigee-access');
var cache = apigee.getCache();
cache.remove('key', function(error) {
});