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 về Apigee X.
thông tin

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

Bộ nhớ đệm phân phối Apigee Edge cho phép bạn lưu trữ chuỗi hoặc dữ liệu khác. Giống như hầu hết bộ nhớ đệm, đây là bộ nhớ đệm được dùng gần đây nhất và có kích thước tối đa. Bên trong Apigee Edge, bộ nhớ đệm sẽ được phân phối giữa tất cả các nút mà ứ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 sử dụng API, bạn có thể tạo tài nguyên bộ nhớ đệm theo cách thủ công hoặc sử dụng tài nguyên mặc định. Để tìm hiểu hướng dẫn về cách lưu vào bộ nhớ đệm trên Apigee Edge, hãy xem bài viết Công cụ lưu trữ liên tục trong Edge. Để tìm hiểu thêm về bộ nhớ đệm phân tán, hãy xem phần Ví dụ: Lưu vào bộ nhớ đệm cho mục đích chung.

Để biết phần 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 thu được 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 tình huống.

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ả về:

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 tài nguyên bộ nhớ đệm tuỳ chỉnh được chỉ định trong đối tượng cấu hình. Để biết thông tin về cách tạo tài nguyên bộ nhớ đệm, hãy xem bài viết 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" của 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 quá trình 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 tài nguyên mặc định. Nếu tài nguyên bộ nhớ đệm không tồn tại, thì phương thức này 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 chặn xung đột hay không. Các giá trị hợp lệ là global, applicationexclusive.

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

    • application: Tất cả các mục bộ nhớ đệm có thể được xem 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 bộ nhớ đệm Node.js trong cùng một ứng dụng có cùng tên nhìn thấy. Đâ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 Chính sách điền sẵn bộ nhớ đệmXử lý khoá bộ nhớ đệm, hãy sử dụng tham số này để chỉ định tiền tố đó. Edge sẽ tự động thêm hậu tố dấu gạch dưới đôi vào tên tiền tố. Vì vậy, nếu một khoá bộ nhớ đệm được tạo bằng tiền tố "UserToken", thì tiền tố để 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 bộ nhớ đệm, tính bằng giây. Nếu bạn không chỉ định, thì TTL mặc định trong tài nguyên bộ nhớ đệm sẽ được sử dụng.

  • timeout: Thời gian chờ tìm nạp kết quả từ bộ nhớ đệm được phân phối (tính bằng giây). Thời lượng mặc định là 30 giây. Các ứng dụng có phân biệt độ trễ có thể nên giảm tình trạng 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ường hợp trả lại hàng:

Đố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");

Tính năng 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 xác định duy nhất mục trong bộ nhớ đệm. Kích thước khoá bộ nhớ đệm được giới hạn ở 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 loại dữ liệu khác đều 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 để lưu trữ dữ liệu trong bộ nhớ đệm, tính bằng giây. Nếu bạn không chỉ định thì TTL mặc định sẽ được sử dụng.

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

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 bộ nhớ đệm được đưa vào bộ nhớ đệm từ chính sách Apigee Edge (chẳng hạn như Chính sách điền bộ nhớ đệm), bạn 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. Để thực hiện việc này, bạn cần biết cách thiết lập chính sách này. Mặc dù phần Xử lý khoá bộ nhớ đệm mô tả cách các chính sách tạo khoá bộ nhớ đệm, như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): 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 – Đối tượng Lỗi. Nếu xảy ra lỗi trong khi truy xuất từ bộ nhớ đệm, thì đối tượng Lỗi sẽ được đặt tại đây. Nếu không, tham số này sẽ được đặt thành "undefined".

    • data – Dữ liệu được truy xuất (nếu có). Giá trị này sẽ là một trong 4 giá trị:

      • Nếu bạn đã chèn một chuỗi, thì giá trị trả về sẽ là một chuỗi.
      • Nếu bạn chèn một vùng đệm, thì vùng đệm đó 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.
      • Nếu không tìm thấy kết quả nào, thì kết quả sẽ là "không xác định".

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 trong 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" (không xác định) trừ khi một giá trị khác được chèn.

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 cần vô hiệu hoá.

    Đối với các mục bộ nhớ đệm được đưa vào bộ nhớ đệm từ chính sách Apigee Edge (chẳng hạn như Chính sách điền bộ nhớ đệm), bạn 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ù phần Xử lý khoá bộ nhớ đệm mô tả cách các chính sách tạo khoá bộ nhớ đệm, như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): Hàm gọi lại 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) {
});