您目前查看的是 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:指定快取項目是否加上前置字串,以免發生衝突。有效值為global、application和exclusive。-
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 });
取得
cache.get('key',
function(error, data));從快取擷取資料。
參數:
-
key(必填):可專門識別快取中項目的字串。如果是從 Apigee Edge 政策 (例如「填入快取」政策) 放入快取的快取項目,您需要推斷政策建立項目鍵的特定方式,藉此建構快取鍵。如要這麼做,您必須瞭解政策的設定方式。「使用快取鍵」一文說明政策如何建立快取鍵,但請注意,您不應指定與範圍相關的字串值;在 Node.js 的呼叫中,範圍已是內容的一部分。
-
callback(必要):資料可用時要呼叫的函式。如有快取資料,系統會透過第二個參數傳回。-
error- 錯誤物件。如果在從快取擷取資料時發生錯誤,系統會在此處設定 Error 物件。否則這個參數會設為「undefined」。 -
data- 擷取的資料 (如有)。這個值會是下列四個值之一:- 如果插入的是字串,則會是字串。
- 如果插入的是緩衝區,則為緩衝區。
- 如果插入的是物件,則會是包含物件 JSON 版本的字串,由「JSON.stringify」產生。
- 如果找不到任何內容,則為「未定義」。
-
範例:
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 政策 (例如「填入快取」政策) 放入快取的快取項目,您需要推斷政策建立項目鍵的特定方式,藉此建構快取鍵。如要這麼做,您必須瞭解政策的設定方式。「使用快取鍵」一文說明政策如何建立快取鍵,但請注意,您不應指定與範圍相關的字串值;在 Node.js 的呼叫中,範圍已是內容的一部分。
-
callback(必要):回呼函式,如有錯誤,系統會以 Error 物件做為第一個參數呼叫此函式。
範例:
var apigee = require('apigee-access'); var cache = apigee.getCache(); cache.remove('key', function(error) { });