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

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

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

แคชแบบกระจายของ Apigee Edge ช่วยให้คุณจัดเก็บสตริงหรือข้อมูลอื่นๆ ได้ แคชนี้เป็นแคชที่ใช้รายการที่ไม่ได้ใช้ล่าสุด (Least-Recently-Used Cache) ที่มีขนาดสูงสุดเช่นเดียวกับแคชส่วนใหญ่ ภายใน 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: ระบุ Time to Live (TTL) เริ่มต้นสำหรับรายการแคช หน่วยเป็นวินาที หากไม่ได้ระบุไว้ ระบบจะใช้ 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: (ไม่บังคับ) หากระบุไว้ ฟังก์ชันที่จะเรียกใช้เมื่อข้อมูลอยู่ในแคชอย่างปลอดภัย ระบบจะเรียกใช้ฟังก์ชันนี้โดยมีออบเจ็กต์ข้อผิดพลาด เป็นพารามิเตอร์แรกหากมีข้อผิดพลาดในการแทรก และจะเรียกใช้โดยไม่มีพารามิเตอร์ในกรณีอื่นๆ

ตัวอย่าง:

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

    • error - ออบเจ็กต์ข้อผิดพลาด หากมีข้อผิดพลาด ขณะดึงข้อมูลจากแคช ระบบจะตั้งค่าออบเจ็กต์ข้อผิดพลาดที่นี่ ไม่เช่นนั้น พารามิเตอร์นี้จะตั้งค่าเป็น "undefined"

    • data - ข้อมูลที่ดึงมา (หากมี) ซึ่งจะเป็น ค่าใดค่าหนึ่งใน 4 ค่าต่อไปนี้

      • หากแทรกสตริง ระบบจะแสดงผลเป็นสตริง
      • หากแทรกบัฟเฟอร์ ระบบจะแสดงผลเป็นบัฟเฟอร์
      • หากแทรกออบเจ็กต์ ระบบจะแสดงผลเป็นสตริงที่มีออบเจ็กต์เวอร์ชัน JSON ตามที่สร้างโดย "JSON.stringify"
      • หากไม่พบรายการใดเลย ระบบจะแสดงผลเป็น "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 (บังคับ): ฟังก์ชัน Callback ที่จะเรียกใช้โดยมีออบเจ็กต์ข้อผิดพลาดเป็นพารามิเตอร์แรกหากมีข้อผิดพลาด

ตัวอย่าง:

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