Caffeine Java: हाई-परफॉर्मेंस इन-मेमोरी कैश
यह क्या है और क्यों ज़रूरी है?
Caffeine एक हाई-परफॉर्मेंस इन-मेमोरी कैशिंग लाइब्रेरी है, जो Java में लिखी गई है। इसे Ben Manes ने बनाया है और यह JVM के लिए सबसे तेज़ कैश इम्प्लीमेंटेशन में से एक है। Caffeine को आधुनिक मल्टीथ्रेडिंग ज़रूरतों को ध्यान में रखकर डिज़ाइन किया गया है और यह कैश में ऑब्जेक्ट्स के लाइफसाइकिल मैनेजमेंट के लिए एक शक्तिशाली API प्रदान करता है।
Caffeine की ज़रूरत क्यों है? किसी भी ऐप्लिकेशन में जो डेटा के साथ काम करता है, अक्सर ऐसी स्थिति आती है जहां एक ही डेटा बार-बार रिक्वेस्ट किया जाता है। हर बार महंगी ऑपरेशन (डेटाबेस क्वेरी, एक्सटर्नल API कॉल, जटिल गणना) करने के बजाय, आप रिज़ल्ट को कैश में सेव कर सकते हैं। Caffeine इसे सबसे कुशल तरीके से करता है, W-TinyLFU (Window Tiny Least Frequently Used) एल्गोरिदम का उपयोग करके, जो एलिमेंट्स को हटाने में उच्च सटीकता और न्यूनतम ओवरहेड सुनिश्चित करता है।
इस लाइब्रेरी का उपयोग Spring Framework (वर्जन 5.0 से) जैसे बड़े प्रोजेक्ट्स में सक्रिय रूप से किया जाता है, जहां यह डिफ़ॉल्ट कैश इम्प्लीमेंटेशन है। Caffeine एसिंक्रोनस लोडिंग, ऑटोमैटिक एंट्री रिफ्रेश, स्टैटिस्टिक्स और कई एविक्शन स्ट्रेटेजीज (टाइम, साइज, रेफरेंस के आधार पर) को सपोर्ट करता है।
इंस्टॉलेशन
Caffeine Maven Central के ज़रिए उपलब्ध है। उपयोग के लिए अपने pom.xml (Maven) या build.gradle (Gradle) में डिपेंडेंसी जोड़ें।
Maven
<dependency>
<groupId>com.github.ben-manes.caffeine</groupId>
<artifactId>caffeine</artifactId>
<version>3.1.8</version>
</dependency>
Gradle
implementation 'com.github.ben-manes.caffeine:caffeine:3.1.8'
नवीनतम वर्जन के लिए Maven Central देखें।
त्वरित शुरुआत
Caffeine कैश बनाने और उपयोग करने का एक छोटा उदाहरण:
import com.github.benmanes.caffeine.cache.Cache;
import com.github.benmanes.caffeine.cache.Caffeine;
import java.util.concurrent.TimeUnit;
public class QuickStart {
public static void main(String[] args) {
// 1. अधिकतम 100 एलिमेंट और लास्ट एक्सेस के 10 मिनट बाद एंट्री एक्सपायर होने वाला कैश बनाएं
Cache<String, String> cache = Caffeine.newBuilder()
.maximumSize(100)
.expireAfterAccess(10, TimeUnit.MINUTES)
.build();
// 2. वैल्यू डालें
cache.put("key1", "नमस्ते, Caffeine!");
// 3. वैल्यू प्राप्त करें
String value = cache.getIfPresent("key1");
System.out.println(value); // आउटपुट: नमस्ते, Caffeine!
// 4. लोडिंग फंक्शन के साथ वैल्यू प्राप्त करें (अगर की मौजूद नहीं है)
String loadedValue = cache.get("key2", k -> "लोड किया गया: " + k);
System.out.println(loadedValue); // आउटपुट: लोड किया गया: key2
}
}
मुख्य तरीके और क्लासेज
आइए Caffeine के प्रमुख क्लासेज और तरीकों को समझें। कॉन्फ़िगरेशन के लिए मुख्य क्लास Caffeine है, और कैश के साथ काम करने के लिए Cache, LoadingCache और AsyncCache हैं।
1. Caffeine.newBuilder()
सिग्नेचर: public static Caffeine<K, V> newBuilder()
यह क्या करता है: कैश को कॉन्फ़िगर करने के लिए एक नया बिल्डर बनाता है। यह आपको सभी पैरामीटर सेट करने की अनुमति देता है।