Truy cập vào bộ nhớ đệm trong Node.js

Bạn đang xem tài liệu về Apigee Edge.
Truy cập vào tài liệu Apigee X.
thông tin

Bạn có thể dùng mô-đun apigee-access để truy cập vào bộ nhớ đệm phân tán Edge từ bên trong một ứng dụng Node.js. Mô-đun này bao gồm các phương thức để lấy bộ nhớ đệmđặt, lấyxoá dữ liệu.

Bộ nhớ đệm phân tán Apigee Edge cho phép bạn lưu trữ các chuỗi hoặc dữ liệu khác. Giống như hầu hết các bộ nhớ đệm, đây là bộ nhớ đệm ít được dùng gần đây nhất với kích thước tối đa. Trong Apigee Edge, bộ nhớ đệm được phân phối giữa tất cả các nút nơi ứng dụng Node.js của bạn thực thi. Bạn có thể quản lý bộ nhớ đệm thông qua API Apigee Edge. Khi dùng API, bạn có thể tạo tài nguyên bộ nhớ đệm theo cách thủ công hoặc dùng tài nguyên mặc định. Để biết thông tin giới thiệu về việc lưu vào bộ nhớ đệm trên Apigee Edge, hãy xem bài viết Các công cụ duy trì trong Edge. Để tìm hiểu thêm về bộ nhớ đệm phân tán, hãy xem Ví dụ: Lưu vào bộ nhớ đệm cho mục đích chung.

Để biết thông tin giới thiệu về mô-đun apigee-access và các tính năng khác của mô-đun này, hãy xem phần Sử dụng mô-đun apigee-access.

Phương thức


(1) getCache

var cache = apigee.getCache(cacheName);

Tra cứu bộ nhớ đệm được đặt tên và tạo bộ nhớ đệm đó nếu cần. Bộ nhớ đệm kết quả sử dụng một nhóm tham số cấu hình được xác định trước, phù hợp với hầu hết các trường hợp.

Các tham số:

cacheName – Một chuỗi, tên của bộ nhớ đệm. (Không phải tên của tài nguyên bộ nhớ đệm).

Trả lại:

Một đối tượng bộ nhớ đệm.

Ví dụ:

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

(2) getCache

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

Truy cập vào một tài nguyên bộ nhớ đệm tuỳ chỉnh được chỉ định trong một đối tượng cấu hình. Để biết thông tin về cách tạo tài nguyên lưu trữ, hãy xem phần Tạo và chỉnh sửa bộ nhớ đệm môi trường.

Các tham số:

cacheName – Một chuỗi, tên của bộ nhớ đệm tuỳ chỉnh. (Không phải tên của tài nguyên bộ nhớ đệm)

options – Một đối tượng cấu hình. Đối tượng có thể trống hoặc có thể chứa các tham số không bắt buộc sau:

  • resource: Tên của "tài nguyên bộ nhớ đệm" Apigee nơi lưu trữ dữ liệu bộ nhớ đệm. Tài nguyên bộ nhớ đệm được dùng để tinh chỉnh việc phân bổ bộ nhớ và các tham số bộ nhớ đệm khác. Nếu bạn không chỉ định, hệ thống sẽ sử dụng một tài nguyên mặc định. Nếu tài nguyên bộ nhớ đệm không tồn tại, phương thức sẽ gửi một lỗi.

  • scope: Chỉ định xem các mục trong bộ nhớ đệm có được thêm tiền tố để ngăn xung đột hay không. Các giá trị hợp lệ là global, applicationexclusive.

    • global: Tất cả các mục trong bộ nhớ đệm đều có thể được tất cả các ứng dụng Node.js nhìn thấy trong cùng một "môi trường" Apigee.

    • application: Tất cả các mục trong bộ nhớ đệm đều có thể được nhìn thấy bởi tất cả các bộ nhớ đệm Node.js thuộc cùng một ứng dụng Apigee Edge.

    • exclusive: (Mặc định) Các mục trong bộ nhớ đệm chỉ được nhìn thấy bởi bộ nhớ đệm Node.js trong cùng một ứng dụng có cùng tên. Đây là tuỳ chọn mặc định.

  • prefix: Nếu tên khoá bộ nhớ đệm có tiền tố, như mô tả trong phần Điền sẵn chính sách Bộ nhớ đệmLàm việc với khoá bộ nhớ đệm, hãy dùng tham số này để chỉ định tiền tố. Edge tự động thêm hậu tố dấu gạch dưới kép vào tên tiền tố. Vì vậy, nếu khoá lưu trữ được tạo bằng tiền tố "UserToken", thì tiền tố cần chỉ định ở đây là "UserToken__".

  • defaultTtl: Chỉ định thời gian tồn tại mặc định cho một mục nhập trong bộ nhớ đệm, tính bằng giây. Nếu bạn không chỉ định, hệ thống sẽ sử dụng TTL mặc định trong tài nguyên bộ nhớ đệm.

  • timeout: Thời gian chờ để tìm nạp kết quả từ bộ nhớ đệm phân tán, tính bằng giây. Mặc định là 30 giây. Các ứng dụng nhạy cảm với độ trễ có thể muốn giảm thời gian này để ngăn thời gian phản hồi chậm nếu cơ sở hạ tầng bộ nhớ đệm bị quá tải.

Trả lại:

Một đối tượng bộ nhớ đệm tuỳ chỉnh.

Ví dụ:

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

Điều này hoạt động với chính sách LookupCache được định cấu hình như sau:

<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));

Đưa dữ liệu vào bộ nhớ đệm.

Các tham số:

  • key: (Bắt buộc) Một chuỗi nhận dạng duy nhất cho mục trong bộ nhớ đệm. Khoá bộ nhớ đệm có kích thước tối đa là 2 KB.

  • data: (Bắt buộc) Một chuỗi, vùng đệm hoặc đối tượng đại diện cho dữ liệu cần lưu vào bộ nhớ đệm. Mọi kiểu dữ liệu khác sẽ dẫn đến lỗi. Để thuận tiện, các đối tượng sẽ được chuyển đổi thành một chuỗi bằng cách sử dụng "JSON.stringify".

  • ttl: (Không bắt buộc) Thời gian tối đa để duy trì dữ liệu trong bộ nhớ đệm, tính bằng giây. Nếu bạn không chỉ định thì hệ thống sẽ sử dụng TTL mặc định.

  • callback: (Không bắt buộc) Nếu được chỉ định, đây là một hàm sẽ được gọi khi dữ liệu đã được lưu trữ an toàn trong bộ nhớ đệm. Hàm này sẽ được gọi bằng một đối tượng Lỗi làm tham số đầu tiên nếu có lỗi chèn, nếu không thì hàm này sẽ được gọi mà không có tham số.

Ví dụ:

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));

Truy xuất dữ liệu từ bộ nhớ đệm.

Các tham số:

  • key (bắt buộc): Một chuỗi xác định duy nhất mục trong bộ nhớ đệm.

    Đối với các mục trong bộ nhớ đệm được đưa vào bộ nhớ đệm từ một chính sách Apigee Edge (chẳng hạn như chính sách Điền sẵn bộ nhớ đệm), bạn sẽ cần tạo khoá bộ nhớ đệm bằng cách suy luận từ cách cụ thể mà chính sách tạo khoá cho các mục. Để làm việc này, bạn cần biết cách định cấu hình chính sách. Mặc dù Làm việc với khoá bộ nhớ đệm mô tả cách các chính sách tạo khoá bộ nhớ đệm, nhưng hãy nhớ rằng bạn không nên chỉ định các giá trị chuỗi liên quan đến phạm vi; trong các lệnh gọi từ Node.js, phạm vi đã là một phần của ngữ cảnh.

  • callback (bắt buộc): Một hàm sẽ được gọi khi có dữ liệu. Nếu có dữ liệu được lưu vào bộ nhớ đệm, dữ liệu đó sẽ được trả về trong tham số thứ hai.

    • error – Một đối tượng Lỗi. Nếu xảy ra lỗi trong khi truy xuất từ bộ nhớ đệm, thì một đối tượng Lỗi sẽ được đặt ở đây. Nếu không, tham số này sẽ được đặt thành "undefined".

    • data – Dữ liệu đã truy xuất (nếu có). Đây sẽ là một trong bốn giá trị sau:

      • Nếu một chuỗi được chèn, thì đó sẽ là một chuỗi.
      • Nếu một vùng đệm được chèn, thì đó sẽ là một vùng đệm.
      • Nếu một đối tượng được chèn, thì đó sẽ là một chuỗi chứa phiên bản JSON của đối tượng do "JSON.stringify" tạo ra.
      • Nếu không tìm thấy gì, thì giá trị sẽ là "undefined".

Ví dụ:

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
});

xoá

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

Làm mất hiệu lực một mục được lưu vào bộ nhớ đệm. Sau khi một khoá không hợp lệ, các yêu cầu get() tiếp theo sẽ trả về "undefined" trừ phi một giá trị khác được chèn vào.

Các tham số:

  • key (Bắt buộc): Một chuỗi nhận dạng duy nhất mục cần vô hiệu hoá trong bộ nhớ đệm.

    Đối với các mục trong bộ nhớ đệm được đưa vào bộ nhớ đệm từ một chính sách Apigee Edge (chẳng hạn như chính sách Điền sẵn bộ nhớ đệm), bạn sẽ cần tạo khoá bộ nhớ đệm bằng cách suy luận từ cách cụ thể mà chính sách tạo khoá cho các mục. Để làm việc này, bạn cần biết cách định cấu hình chính sách. Mặc dù Làm việc với khoá bộ nhớ đệm mô tả cách các chính sách tạo khoá bộ nhớ đệm, nhưng hãy nhớ rằng bạn không nên chỉ định các giá trị chuỗi liên quan đến phạm vi; trong các lệnh gọi từ Node.js, phạm vi đã là một phần của ngữ cảnh.

  • callback (Bắt buộc): Một hàm callback sẽ được gọi bằng đối tượng Lỗi làm tham số đầu tiên nếu có lỗi.

Ví dụ:

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