Node.js में कैश मेमोरी को ऐक्सेस करना

यह Apigee Edge के दस्तावेज़ हैं.
पर जाएं Apigee X दस्तावेज़.
info

Node.js ऐप्लिकेशन से, Edge के डिस्ट्रिब्यूटेड कैश को ऐक्सेस करने के लिए, apigee-access मॉड्यूल का इस्तेमाल किया जा सकता है. इस मॉड्यूल में, कैश पाने और डेटा डालने, पाने, और हटाने के तरीके शामिल हैं.

Apigee Edge के डिस्ट्रिब्यूटेड कैश की मदद से, स्ट्रिंग या अन्य डेटा सेव किया जा सकता है. ज़्यादातर कैश की तरह, यह भी सबसे कम इस्तेमाल किया गया कैश है. इसकी साइज़ की सीमा तय होती है. Apigee Edge में, कैश को उन सभी नोड के बीच डिस्ट्रिब्यूट किया जाता है जहां आपका Node.js ऐप्लिकेशन चलता है. Apigee Edge 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: एक ही Apigee "एनवायरमेंट" में मौजूद सभी Node.js ऐप्लिकेशन, सभी कैश एंट्री देख सकते हैं.

    • application: एक ही Apigee Edge ऐप्लिकेशन के सभी Node.js कैश, सभी कैश एंट्री देख सकते हैं जो उसका हिस्सा हैं.

    • exclusive: (डिफ़ॉल्ट) कैश एंट्री सिर्फ़ एक ही ऐप्लिकेशन में मौजूद Node.js कैश देख सकते हैं. साथ ही, उनका नाम भी एक जैसा होना चाहिए. यह डिफ़ॉल्ट रूप से होता है.

  • prefix: अगर कैश की कुंजी के नाम में कोई प्रीफ़िक्स शामिल है, तो इसे तय करने के लिए इस पैरामीटर का इस्तेमाल करें. इसके बारे में, कैश में डेटा सेव करने की नीति और कैश की कुंजियों के साथ काम करना लेख में बताया गया है. Edge, प्रीफ़िक्स के नाम में अपने-आप डबल अंडरस्कोर सफ़िक्स जोड़ता है. इसलिए, अगर "UserToken" प्रीफ़िक्स के साथ कैश की कुंजी बनाई गई है, तो यहां "UserToken__" प्रीफ़िक्स तय करना होगा.

  • defaultTtl: इससे कैश एंट्री के लिए, डिफ़ॉल्ट टाइम टू लिव (टीटीएल) तय होता है. यह वैल्यू सेकंड में होती है. अगर यह तय नहीं किया जाता है, तो कैश रिसॉर्स में डिफ़ॉल्ट टीटीएल का इस्तेमाल किया जाएगा इस्तेमाल किया जाएगा.

  • 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 केबी से ज़्यादा नहीं होना चाहिए.

  • data: (ज़रूरी) एक स्ट्रिंग, बफ़र या ऑब्जेक्ट, जो कैश में सेव किए जाने वाले डेटा को दिखाता है. किसी अन्य डेटा टाइप का इस्तेमाल करने पर गड़बड़ी होगी. सुविधा के लिए, ऑब्जेक्ट को "JSON.stringify" का इस्तेमाल करके स्ट्रिंग में बदल दिया जाएगा.

  • 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 (ज़रूरी): एक फ़ंक्शन, जिसे डेटा उपलब्ध होने पर कॉल किया जाएगा. अगर कैश किया गया डेटा मौजूद है, तो उसे दूसरे पैरामीटर में लौटाया जाता है.

    • error - एक गड़बड़ी वाला ऑब्जेक्ट. अगर कैश से डेटा वापस पाने में कोई गड़बड़ी होती है, तो यहां गड़बड़ी वाला ऑब्जेक्ट सेट किया जाएगा. इसके अलावा, इस पैरामीटर को "undefined" पर सेट किया जाएगा.

    • data - वापस पाया गया डेटा, अगर कोई है तो. यह इन चार वैल्यू में से कोई एक होगी:

      • अगर कोई स्ट्रिंग डाली गई थी, तो यह एक स्ट्रिंग होगी.
      • अगर कोई बफ़र डाला गया था, तो यह एक बफ़र होगा.
      • अगर कोई ऑब्जेक्ट डाला गया था, तो यह एक स्ट्रिंग होगी. इसमें "JSON.stringify" से जनरेट किया गया ऑब्जेक्ट का JSON वर्शन होगा.
      • अगर कुछ नहीं मिला, तो यह "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
});

remove

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

कैश किए गए आइटम को अमान्य करें. किसी कुंजी को अमान्य करने के बाद, get() के अगले अनुरोधों में "undefined" वैल्यू मिलेगी. ऐसा तब तक होगा, जब तक कोई दूसरी वैल्यू नहीं डाली जाती.

पैरामीटर:

  • key (ज़रूरी): एक स्ट्रिंग, जो कैश में मौजूद उस आइटम की पहचान खास तरीके से करती है जिसे अमान्य करना है.

    Apigee Edge की किसी नीति (जैसे, कैश में डेटा सेव करने की नीति) से कैश में सेव की गई कैश एंट्री के लिए, आपको कैश की कुंजी बनानी होगी. इसके लिए, आपको यह समझना होगा कि नीति, एंट्री के लिए कुंजियां किस तरीके से बनाती है. इसके लिए, आपको यह जानना होगा कि नीति को कैसे कॉन्फ़िगर किया गया है. कैश की कुंजियों के साथ काम करना लेख में बताया गया है कि नीतियां, कैश की कुंजियां कैसे बनाती हैं. हालांकि, ध्यान रखें कि आपको स्कोप से जुड़ी स्ट्रिंग वैल्यू तय नहीं करनी चाहिए. Node.js से किए जाने वाले कॉल में, स्कोप पहले से ही कॉन्टेक्स्ट का हिस्सा होता है.

  • callback (ज़रूरी): एक कॉलबैक फ़ंक्शन, जिसे गड़बड़ी होने पर, पहले पैरामीटर के तौर पर गड़बड़ी वाले ऑब्जेक्ट के साथ कॉल किया जाएगा.

उदाहरण:

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