您正在查看 Apigee Edge 文档。
前往 Apigee X 文档。 信息
您可以使用 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:如果缓存键名称包含前缀(如 Populate Cache 政策和使用缓存键中所述),请使用此参数指定前缀。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>
放置
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 对象。如果在从缓存中检索时出现错误,则此处将设置一个 Error 对象。否则,此参数将设置为“未定义”。 -
data- 检索到的数据(如果有)。它将是以下四个值之一:- 如果插入的是字符串,则结果将是字符串。
- 如果插入了缓冲区,则为缓冲区。
- 如果插入的是对象,则它将是一个字符串,其中包含由“JSON.stringify”生成的对象的 JSON 版本。
- 如果未找到任何内容,则为“undefined”。
-
示例:
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) { });