دسترسی به کش در Node.js

شما در حال مشاهده اسناد Apigee Edge هستید.
به مستندات Apigee X بروید .
اطلاعات

می توانید از ماژول apigee-access برای دسترسی به کش توزیع شده Edge از داخل یک برنامه Node.js استفاده کنید. این ماژول شامل روش هایی برای گرفتن کش و قرار دادن ، گرفتن و حذف داده ها است.

حافظه پنهان توزیع شده Apigee Edge به شما امکان می دهد رشته ها یا داده های دیگر را ذخیره کنید. مانند بسیاری از کش ها، این کش که اخیراً کمتر از آن استفاده شده است با حداکثر اندازه است. در داخل Apigee Edge، کش بین تمام گره هایی که برنامه Node.js شما اجرا می شود، توزیع می شود. شما می توانید کش را از طریق Apigee Edge API مدیریت کنید. با استفاده از API، می توانید منابع کش را به صورت دستی ایجاد کنید یا می توانید از منبع پیش فرض استفاده کنید. برای مقدمه ای در مورد کش کردن در Apigee Edge، به ابزار Persistence در Edge مراجعه کنید. برای کسب اطلاعات بیشتر در مورد حافظه پنهان توزیع شده، به مثال مراجعه کنید: ذخیره سازی با هدف عمومی .

برای آشنایی با ماژول apigee-access و سایر ویژگی های آن، به استفاده از ماژول apigee-access مراجعه کنید.

روش ها


(1) دریافت کش

var cache = apigee.getCache( cacheName );

یک کش با نام پیدا کنید و در صورت لزوم آن را ایجاد کنید. حافظه پنهان حاصل از یک مجموعه از پیش تعریف شده از پارامترهای پیکربندی مناسب برای اکثر موقعیت ها استفاده می کند.

پارامترها:

cacheName - یک رشته، نام حافظه پنهان. (نه نام منبع کش).

برمی‌گرداند:

یک شی کش.

مثال:

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

(2) دریافت کش

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

دسترسی به یک منبع کش سفارشی مشخص شده در یک شیء پیکربندی. برای اطلاعات در مورد نحوه ایجاد یک منبع حافظه پنهان، به ایجاد و ویرایش کش محیطی مراجعه کنید.

پارامترها:

cacheName - یک رشته، نام کش سفارشی. (نه نام منبع حافظه پنهان)

گزینه ها - یک شی پیکربندی. شی می تواند خالی باشد، یا می تواند شامل پارامترهای اختیاری زیر باشد:

  • resource : نام یک «منبع کش» Apigee که در آن داده‌های کش ذخیره می‌شود. منابع کش برای تنظیم دقیق تخصیص حافظه و سایر پارامترهای کش استفاده می شود. اگر مشخص نشده باشد، یک منبع پیش فرض استفاده خواهد شد. اگر منبع کش وجود نداشته باشد، متد خطا می دهد.

  • scope : مشخص می کند که آیا ورودی های کش برای جلوگیری از برخورد پیشوند دارند یا خیر. مقادیر معتبر global ، application و exclusive هستند.

    • global : همه ورودی‌های کش ممکن است توسط همه برنامه‌های Node.js در یک «محیط Apigee» دیده شوند.

    • application : تمام ورودی های کش ممکن است توسط تمام کش های Node.js که بخشی از همان برنامه Apigee Edge هستند، دیده شوند.

    • exclusive : (پیش‌فرض) ورودی‌های کش فقط توسط کش‌های Node.js در همان برنامه‌ای که نام یکسانی دارند مشاهده می‌شوند. این پیش فرض است.

  • prefix : اگر نام کلید حافظه پنهان شامل یک پیشوند باشد، همانطور که در سیاست پر کردن حافظه پنهان و کار با کلیدهای حافظه پنهان توضیح داده شده است، از این پارامتر برای تعیین آن استفاده کنید. Edge به طور خودکار یک پسوند دوتایی به نام پیشوند اضافه می کند. بنابراین اگر یک کلید کش با پیشوند "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>

قرار دادن

cache.put(' key ', data , ttl , function( error ));

داده ها را در کش قرار دهید.

پارامترها:

  • key : (الزامی) رشته ای که به طور منحصر به فرد مورد را در حافظه پنهان شناسایی می کند. اندازه کلیدهای کش به 2 کیلوبایت محدود شده است.

  • data : (لازم) رشته، بافر یا شیئی که داده ها را در حافظه پنهان نشان می دهد. هر نوع داده دیگری منجر به خطا می شود. برای راحتی، اشیاء با استفاده از "JSON.stringify" به یک رشته تبدیل می شوند.

  • ttl : (اختیاری) حداکثر زمان برای ماندگاری داده ها در حافظه پنهان، بر حسب ثانیه. اگر مشخص نشده باشد، یک TTL پیش فرض استفاده خواهد شد.

  • callback : (اختیاری) در صورت مشخص شدن، تابعی که پس از اینکه داده ها به طور ایمن در حافظه پنهان قرار گیرند فراخوانی می شود. در صورت وجود خطای درج، با یک شی Error به عنوان پارامتر اول فراخوانی می شود و در غیر این صورت بدون پارامتر فراخوانی می شود.

مثال:

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 در حافظه نهان قرار می‌گیرند (مانند سیاست Populate Cache )، باید با استنباط از روش خاصی که خط‌مشی کلیدها را برای ورودی‌ها ایجاد می‌کند، کلید حافظه پنهان را بسازید. برای انجام این کار، باید بدانید که سیاست چگونه پیکربندی شده است. در حالی که کار با کلیدهای کش توضیح می دهد که چگونه کلیدهای حافظه پنهان توسط خط مشی ها ایجاد می شوند، به خاطر داشته باشید که نباید مقادیر رشته مربوط به محدوده را مشخص کنید. در تماس‌های Node.js، scope در حال حاضر بخشی از زمینه است.

  • callback (الزامی): تابعی که در صورت موجود بودن داده فراخوانی می شود. اگر داده های کش وجود داشته باشد، در پارامتر دوم برگردانده می شود.

    • error - یک شیء خطا. اگر هنگام بازیابی از حافظه پنهان خطایی وجود داشته باشد، یک شی Error در اینجا تنظیم می شود. در غیر این صورت این پارامتر روی "تعریف نشده" تنظیم می شود.

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

حذف کنید

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

یک مورد ذخیره شده را باطل کنید. هنگامی که یک کلید باطل می شود، درخواست های get() بعدی «تعریف نشده» برمی گردند مگر اینکه مقدار دیگری درج شود.

پارامترها:

  • key (الزامی): رشته ای که به طور منحصر به فرد مورد موجود در حافظه پنهان را برای باطل کردن شناسایی می کند.

    برای ورودی‌های کش که از یک خط‌مشی Apigee Edge در حافظه نهان قرار می‌گیرند (مانند سیاست Populate Cache )، باید با استنباط از روش خاصی که خط‌مشی کلیدها را برای ورودی‌ها ایجاد می‌کند، کلید حافظه پنهان را بسازید. برای انجام این کار، باید بدانید که سیاست چگونه پیکربندی شده است. در حالی که کار با کلیدهای کش توضیح می دهد که چگونه کلیدهای حافظه پنهان توسط خط مشی ها ایجاد می شوند، به خاطر داشته باشید که نباید مقادیر رشته مربوط به محدوده را مشخص کنید. در تماس‌های Node.js، scope در حال حاضر بخشی از زمینه است.

  • callback (لازم): یک تابع callback که در صورت وجود خطایی با یک شی Error به عنوان پارامتر اول فراخوانی می شود.

مثال:

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