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

Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến 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đặt, nhậnxoá dữ liệu.

Bộ nhớ đệm phân phối 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 bộ nhớ đệm, đây là bộ nhớ đệm được sử 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 vào 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 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. Để xem hướng dẫn về cách lưu vào bộ nhớ đệm trên Apigee Edge, hãy tham khảo bài viết Công cụ liên tục trong Edge. Để tìm hiểu thêm về bộ nhớ đệm phân phối, hãy xem Ví dụ: Lưu vào bộ nhớ đệm với mục đích chung.

Để xem 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 bài viết Sử dụng mô-đun truy cập apigee.

Phương thức


(1) getCache

var cache = apigee.getCache(cacheName);

Tìm kiếm một bộ nhớ đệm đã đặt tên và tạo bộ nhớ đệm đó nếu cần. Bộ nhớ đệm thu được sẽ sử dụng một tập hợp các 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ả về:

Đố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 – Đố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 một "tài nguyên bộ nhớ đệm" Apigee lưu trữ dữ liệu bộ nhớ đệm. Các 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 ra lỗi.

  • scope: Chỉ định xem các mục 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 đều có thể xem tất cả các mục nhập bộ nhớ đệm trong cùng một "môi trường" Apigee.

    • application: Mọi bộ nhớ đệm Node.js thuộc cùng một ứng dụng Apigee Edge đều có thể xem tất cả các mục nhập bộ nhớ đệm.

    • exclusive: (Mặc định) Chỉ các bộ nhớ đệm Node.js trong cùng một ứng dụng có cùng tên mới thấy các mục nhập vào Bộ nhớ đệm. Đây là lựa chọn mặc định.

  • prefix: Nếu tên khoá bộ nhớ đệm chứa một tiền tố, như mô tả trong phần Điền chính sách Bộ nhớ đệmLàm việc với các khoá bộ nhớ đệm, hãy dùng tham số này để chỉ định. 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 một khoá bộ nhớ đệm đượ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 hoạt động mặc định của một mục trong 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 đã 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 nhạy cảm về độ trễ nên giảm tình trạng này để tránh thời gian phản hồi chậm nếu cơ sở hạ tầng bộ nhớ đệm bị quá tải.

Trả về:

Đố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>

đặt

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ột mục trong bộ nhớ đệm. Khoá bộ nhớ đệm được giới hạn kích thước 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 với đối tượng Error (Lỗi) làm tham số đầu tiên nếu có lỗi chèn, và nếu không, phương thức 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
});

nhận

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ột mục trong bộ nhớ đệm.

    Đối với các mục nhập vào bộ nhớ đệm được lưu vào bộ nhớ đệm thông qua chính sách Apigee Edge (chẳng hạn như Điền chính sách bộ nhớ đệm), bạn sẽ cần tạo khoá bộ nhớ đệm bằng cách suy ra cách cụ thể mà chính sách này tạo khoá cho các mục nhập. Để 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ù bài viết Làm việc với khoá bộ nhớ đệm mô tả cách chính sách tạo ra khoá bộ nhớ đệm, nhưng xin lưu ý rằng bạn không nên chỉ định 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 – Đối tượng Lỗi. Nếu xảy ra lỗi khi truy xuất từ bộ nhớ đệm, thì đối tượng Error (Lỗi) sẽ được đặt ở đây. Nếu không, thông số này sẽ được đặt thành "không xác định".

    • 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ì đó sẽ là một chuỗi.
      • Nếu một Vùng đệm được chèn, thì vùng đệm đó sẽ là Vùng đệm.
      • Nếu bạn chèn một đối tượng, đối tượng đó 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 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));

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

Các tham số:

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

    Đối với các mục nhập vào bộ nhớ đệm được lưu vào bộ nhớ đệm thông qua chính sách Apigee Edge (chẳng hạn như Điền chính sách bộ nhớ đệm), bạn sẽ cần tạo khoá bộ nhớ đệm bằng cách suy ra cách cụ thể mà chính sách này tạo khoá cho các mục nhập. Để 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ù bài viết Làm việc với khoá bộ nhớ đệm mô tả cách chính sách tạo ra khoá bộ nhớ đệm, nhưng xin lưu ý rằng bạn không nên chỉ định 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 callback sẽ được gọi với đối tượng Error (Lỗi) là thông 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) {
});