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

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

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

حافظه پنهان توزیع‌شده Apigee Edge به شما امکان می‌دهد رشته‌ها یا سایر داده‌ها را ذخیره کنید. مانند اکثر حافظه‌های پنهان، این یک حافظه پنهان با کمترین استفاده اخیر و حداکثر اندازه است. در Apigee Edge، حافظه پنهان بین تمام گره‌هایی که برنامه Node.js شما در آنها اجرا می‌شود، توزیع شده است. می‌توانید حافظه پنهان را از طریق API Apigee Edge مدیریت کنید. با استفاده از 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 - یک رشته، نام حافظه پنهان سفارشی. (نام منبع حافظه پنهان نیست)

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

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

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

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

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

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

  • prefix : اگر نام کلید کش شامل یک پیشوند باشد، همانطور که در سیاست Populate Cache و Working with cache keys توضیح داده شده است، از این پارامتر برای مشخص کردن آن استفاده کنید. Edge به طور خودکار یک پسوند با دو زیرخط به نام پیشوند اضافه می‌کند. بنابراین اگر یک کلید کش با پیشوند "UserToken" ایجاد شده باشد، پیشوندی که باید در اینجا مشخص شود "UserToken__" است.

  • defaultTtl : زمان پیش‌فرض برای ماندگاری یک ورودی کش را بر حسب ثانیه مشخص می‌کند. اگر مشخص نشود، از TTL پیش‌فرض در منبع کش استفاده خواهد شد.

  • timeout : مدت زمان انتظار برای دریافت نتیجه از حافظه پنهان توزیع‌شده، بر حسب ثانیه. مقدار پیش‌فرض ۳۰ ثانیه است. برنامه‌های حساس به تأخیر ممکن است بخواهند این مقدار را کاهش دهند تا در صورت بارگذاری بیش از حد زیرساخت حافظه پنهان، از کندی زمان پاسخ جلوگیری شود.

بازده:

یک شیء کش سفارشی.

مثال:

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

داده‌ها را در حافظه پنهان (cache) قرار دهید.

پارامترها:

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

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

بازیابی داده‌ها از حافظه پنهان (cache).

پارامترها:

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

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

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

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

حذف

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

یک آیتم ذخیره شده در حافظه پنهان را نامعتبر می‌کند. هنگامی که یک کلید نامعتبر می‌شود، درخواست‌های بعدی get() مقدار "undefined" را برمی‌گردانند، مگر اینکه مقدار دیگری وارد شود.

پارامترها:

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

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

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

مثال:

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

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

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

حافظه پنهان توزیع‌شده Apigee Edge به شما امکان می‌دهد رشته‌ها یا سایر داده‌ها را ذخیره کنید. مانند اکثر حافظه‌های پنهان، این یک حافظه پنهان با کمترین استفاده اخیر و حداکثر اندازه است. در Apigee Edge، حافظه پنهان بین تمام گره‌هایی که برنامه Node.js شما در آنها اجرا می‌شود، توزیع شده است. می‌توانید حافظه پنهان را از طریق API Apigee Edge مدیریت کنید. با استفاده از 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 - یک رشته، نام حافظه پنهان سفارشی. (نام منبع حافظه پنهان نیست)

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

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

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

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

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

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

  • prefix : اگر نام کلید کش شامل یک پیشوند باشد، همانطور که در سیاست Populate Cache و Working with cache keys توضیح داده شده است، از این پارامتر برای مشخص کردن آن استفاده کنید. Edge به طور خودکار یک پسوند با دو زیرخط به نام پیشوند اضافه می‌کند. بنابراین اگر یک کلید کش با پیشوند "UserToken" ایجاد شده باشد، پیشوندی که باید در اینجا مشخص شود "UserToken__" است.

  • defaultTtl : زمان پیش‌فرض برای ماندگاری یک ورودی کش را بر حسب ثانیه مشخص می‌کند. اگر مشخص نشود، از TTL پیش‌فرض در منبع کش استفاده خواهد شد.

  • timeout : مدت زمان انتظار برای دریافت نتیجه از حافظه پنهان توزیع‌شده، بر حسب ثانیه. مقدار پیش‌فرض ۳۰ ثانیه است. برنامه‌های حساس به تأخیر ممکن است بخواهند این مقدار را کاهش دهند تا در صورت بارگذاری بیش از حد زیرساخت حافظه پنهان، از کندی زمان پاسخ جلوگیری شود.

بازده:

یک شیء کش سفارشی.

مثال:

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

داده‌ها را در حافظه پنهان (cache) قرار دهید.

پارامترها:

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

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

بازیابی داده‌ها از حافظه پنهان (cache).

پارامترها:

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

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

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

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

حذف

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

یک آیتم ذخیره شده در حافظه پنهان را نامعتبر می‌کند. هنگامی که یک کلید نامعتبر می‌شود، درخواست‌های بعدی get() مقدار "undefined" را برمی‌گردانند، مگر اینکه مقدار دیگری وارد شود.

پارامترها:

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

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

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

مثال:

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