การเข้าถึงแคชใน Node.js

คุณกำลังดูเอกสารประกอบสำหรับ Apigee Edge
ไปที่เอกสารประกอบเกี่ยวกับ Apigee X
ข้อมูล

คุณสามารถใช้โมดูล apigee-access เพื่อเข้าถึงแคชที่กระจายของ Edge จากภายในแอปพลิเคชัน Node.js โมดูลนี้มีวิธีการสำหรับการรับแคชและการป้อน การรับ และการนำออกข้อมูล

แคชแบบกระจายของ 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: แอปพลิเคชัน Node.js ทั้งหมดใน "สภาพแวดล้อม" Apigee เดียวกันจะเห็นรายการแคชทั้งหมด

    • application: แคช Node.js ทั้งหมดที่เป็นส่วนหนึ่งของแอปพลิเคชัน Apigee Edge เดียวกันจะดูรายการแคชทั้งหมดได้

    • exclusive: (ค่าเริ่มต้น) เฉพาะแคช Node.js ในแอปพลิเคชันเดียวกันที่มีชื่อเดียวกันเท่านั้นที่จะดูรายการแคชได้ ซึ่งเป็นค่าเริ่มต้น

  • prefix: หากชื่อคีย์แคชมีคำนำหน้าตามที่อธิบายไว้ในการป้อนข้อมูลนโยบายแคชและการทํางานกับคีย์แคช ให้ใช้พารามิเตอร์นี้เพื่อระบุ Edge จะเพิ่มคำต่อท้ายขีดล่าง 2 ขีดลงในชื่อคำนำหน้าโดยอัตโนมัติ ดังนั้นหากสร้างคีย์แคชด้วยคำนำหน้า "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: (ไม่บังคับ) หากระบุ ฟังก์ชันที่จะเรียกใช้เมื่อข้อมูลอยู่ในแคชอย่างปลอดภัย โดยระบบจะเรียกใช้พารามิเตอร์นี้ด้วยออบเจ็กต์ข้อผิดพลาด เป็นพารามิเตอร์แรกหากมีข้อผิดพลาดในการแทรก มิเช่นนั้น ระบบจะเรียกใช้พารามิเตอร์โดยไม่มีพารามิเตอร์

ตัวอย่างเช่น

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

ดึงข้อมูลจากแคช

พารามิเตอร์

  • key (ต้องระบุ): สตริงที่ระบุรายการในแคชโดยไม่ซ้ำกัน

    สำหรับรายการแคชที่ใส่ลงในแคชจากนโยบาย Apigee Edge (เช่น นโยบายการสร้างแคช) คุณจะต้องสร้างคีย์แคชโดยอนุมานจากวิธีที่เฉพาะเจาะจงที่นโยบายสร้างคีย์สำหรับรายการ ซึ่งคุณจะต้องทราบวิธีกำหนดค่านโยบาย แม้ว่าหัวข้อการทํางานกับคีย์แคชจะอธิบายวิธีที่นโยบายสร้างคีย์แคช แต่โปรดทราบว่าคุณไม่ควรระบุค่าสตริงที่เกี่ยวข้องกับขอบเขต ในการเรียกใช้จาก Node.js ขอบเขตจะเป็นส่วนหนึ่งของบริบทอยู่แล้ว

  • callback (ต้องระบุ): ฟังก์ชันที่จะเรียกใช้เมื่อข้อมูลพร้อมใช้งาน หากมีข้อมูลที่แคชไว้ ระบบจะส่งข้อมูลนั้นในพารามิเตอร์ที่ 2

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

remove

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

ทำให้รายการที่แคชไว้ไม่ถูกต้อง เมื่อคีย์เป็นโมฆะ คําขอ get() ที่ตามมาจะแสดงผลเป็น "undefined" เว้นแต่จะมีการแทรกค่าอื่น

พารามิเตอร์:

  • key (ต้องระบุ): สตริงที่ระบุรายการในแคชอย่างไม่ซ้ำกันเพื่อทำให้ข้อมูลดังกล่าวใช้งานไม่ได้

    สำหรับรายการแคชที่ใส่ลงในแคชจากนโยบาย Apigee Edge (เช่น นโยบายการสร้างแคช) คุณจะต้องสร้างคีย์แคชโดยอนุมานจากวิธีที่เฉพาะเจาะจงที่นโยบายสร้างคีย์สำหรับรายการ ซึ่งคุณจะต้องทราบวิธีกำหนดค่านโยบาย แม้ว่าหัวข้อการทํางานกับคีย์แคชจะอธิบายวิธีที่นโยบายสร้างคีย์แคช แต่โปรดทราบว่าคุณไม่ควรระบุค่าสตริงที่เกี่ยวข้องกับขอบเขต ในการเรียกใช้จาก Node.js ขอบเขตจะเป็นส่วนหนึ่งของบริบทอยู่แล้ว

  • callback (ต้องระบุ): ฟังก์ชัน Callback ที่จะเรียกใช้พร้อมออบเจ็กต์ Error เป็นพารามิเตอร์แรกหากมีข้อผิดพลาด

ตัวอย่างเช่น

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