क्या है `cached` और इसकी आवश्यकता क्यों है?
लाइब्रेरी cached Rust में फ़ंक्शन कॉल के परिणामों को कैश करने के लिए एक शक्तिशाली और लचीला टूल है। यह महंगे ऑपरेशनों (जैसे DB क्वेरी, बड़े डेटा पर गणना, बाहरी API कॉल) की बार-बार गणना से बचकर प्रोग्राम के निष्पादन को काफी तेज कर सकता है। कैशिंग विशेष रूप से वेब सर्वर, गेम इंजन, एनालिटिकल सिस्टम और किसी भी एप्लिकेशन में उपयोगी है जहां एक ही डेटा बार-बार अनुरोध किया जाता है।
स्थापना
अपने Cargo.toml में निर्भरता जोड़ें:
[dependencies]cached = "0.48"इसके बाद cargo build चलाएं — लाइब्रेरी उपयोग के लिए तैयार है।
मुख्य कार्य
- फ़ंक्शन कैशिंग — इसके तर्कों के आधार पर फ़ंक्शन कॉल के परिणामों को स्वचालित रूप से सहेजना।
- TTL (Time To Live) — कैश का जीवनकाल निर्धारित किया जाता है, जिसके बाद डेटा स्वचालित रूप से हटा दिया जाता है।
- अधिकतम कैश आकार — संग्रहीत प्रविष्टियों की संख्या की सीमा (LRU-ह्यूरिस्टिक)।
- एसिंक्रोनस समर्थन —
cached::asyncके माध्यम से async-फ़ंक्शन के साथ काम करना। - भंडार — Redis, Memcached, फ़ाइल कैश और in-memory भंडार के लिए अंतर्निहित समर्थन।
Rust में कोड उदाहरण
use cached::proc_macro::cached;use std::time::Duration;
// 60 सेकंड के TTL और अधिकतम 10 प्रविष्टियों के साथ फ़ंक्शन को कैश करें#[cached( time = 60, size = 10, key = "u32", convert = r#"{ _input }"#)]fn expensive_computation(input: u32) -> String { println!("{} के लिए गणना कर रहे हैं", input); std::thread::sleep(Duration::from_secs(2)); format!("{} के लिए परिणाम", input)}
fn main() { // पहला कॉल — गणना (2 सेकंड) println!("{}", expensive_computation(42)); // दूसरा कॉल — कैश से तत्काल वापसी println!("{}", expensive_computation(42));}पहले कॉल expensive_computation(42) पर फ़ंक्शन निष्पादित होगा (2 सेकंड की देरी), और दोहराए जाने पर परिणाम तुरंत कैश से लिया जाएगा।
कब उपयोग करें
लाइब्रेरी cached इसके लिए आदर्श है:
- अपरिवर्तनीय तर्कों के साथ बार-बार कॉल किए जाने वाले फ़ंक्शन को तेज करना।
- डेटाबेस या बाहरी सेवाओं पर लोड कम करना।
- पुनरावर्ती एल्गोरिदम (जैसे, Fibonacci संख्याएं) में मेमोइज़ेशन लागू करना।
- API में कैशिंग प्रॉक्सी लेयर बनाना।
यदि डेटा बार-बार बदलता है या परिणाम बाहरी स्थिति (समय, यादृच्छिकता) पर निर्भर करता है, तो कैशिंग से बचें।
निष्कर्ष
cached एक न्यूनतम लेकिन शक्तिशाली लाइब्रेरी है जो Rust में 90% कैशिंग समस्याओं को हल करती है। मैक्रोज़ के कारण, इसमें boilerplate कोड की आवश्यकता नहीं होती है और इसे किसी भी प्रोजेक्ट में आसानी से एकीकृत किया जा सकता है। इसे आज ही स्थापित करें और प्रदर्शन में वृद्धि महसूस करें!
पुस्तकालय में भी
Swift में Kafka (iOS/macOS): लाइब्रेरी, क्लाइंट और उदाहरण
Kotlin में PDF जनरेशन: लाइब्रेरीज़ और टूल्स (iText, Apache PDFBox)
Redis Java क्लाइंट: Jedis, Lettuce और Redisson - पूरी गाइड
JavaScript (Node.js) में S3 और क्लाउड स्टोरेज के साथ कार्य — लाइब्रेरी @aws-sdk/client-s3
Ardalis.Specification C# (.NET) पूर्ण गाइड: उदाहरण और ट्यूटोरियल