जावा में कैशिंग: Redis, Ehcache, Caffeine, Hazelcast — अवलोकन और उदाहरण

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

जावा में कैशिंग: Redis और अन्य समाधान

\n\n

कैशिंग Java अनुप्रयोगों के प्रदर्शन को अनुकूलित करने की प्रमुख तकनीकों में से एक है। यह प्रतिक्रिया समय को कम करने, डेटाबेस पर लोड कम करने और बुनियादी ढांचे की लागत को कम करने में मदद करता है। इस लेख में, हम जावा में कैशिंग के लिए लोकप्रिय लाइब्रेरी और टूल्स पर विस्तार से चर्चा करेंगे: Redis, Ehcache, Caffeine और Hazelcast। आप जानेंगे कि कब और कौन सा टूल चुनना है, और काम करने वाले कोड उदाहरण भी देखेंगे।

\n\n

कैशिंग की आवश्यकता क्यों है?

\n

कैश के बिना, डेटा का प्रत्येक अनुरोध धीमी स्टोरेज (DB, बाहरी API) से पढ़ने की ओर ले जाता है। कैश बार-बार अनुरोधित डेटा को तेज़ मेमोरी (in-process या in-memory) में संग्रहीत करता है, जो प्रदान करता है:

\n
    \n
  • पहुंच में 10–100 गुना तेजी
  • \n
  • DB पर लोड में कमी
  • \n
  • सिस्टम की थ्रूपुट क्षमता में वृद्धि
  • \n
  • संसाधनों की बचत
  • \n
\n\n

1. Redis — वितरित कैश

\n

Redis एक in-memory डेटा स्टोर है जो एक अलग सर्वर के रूप में काम करता है। यह जटिल डेटा संरचनाओं (स्ट्रिंग्स, लिस्ट्स, सेट्स, हैशेज़) और कुंजियों की समाप्ति अवधि (TTL) तंत्र का समर्थन करता है। Java के लिए Jedis या Lettuce क्लाइंट का उपयोग किया जाता है।

\n\n

Redis का Jedis के साथ उपयोग उदाहरण

\n
import redis.clients.jedis.Jedis;\n\npublic class RedisCacheExample {\n    public static void main(String[] args) {\n        try (Jedis jedis = new Jedis("localhost", 6379)) {\n            // 60 सेकंड TTL के साथ मान सेट करें\n            jedis.setex("user:123", 60, "{\\"name\\":\\"Alice\\",\\"role\\":\\"admin\\"}");\n\n            // मान पढ़ें\n            String userData = jedis.get("user:123");\n            System.out.println("Cached data: " + userData);\n\n            // कुंजी के अस्तित्व की जाँच करें\n            System.out.println("Key exists: " + jedis.exists("user:123"));\n        }\n    }\n}
\n\n

Redis के लाभ:

\n
    \n
  • क्लस्टरिंग और प्रतिकृति का समर्थन
  • \n
  • स्थायित्व (RDB, AOF)
  • \n
  • समृद्ध कमांड सेट (INCR, SORT, PUB/SUB)
  • \n
  • spring-boot-starter-data-redis के माध्यम से Spring Boot के साथ उत्कृष्ट एकीकरण
  • \n
\n\n

नुकसान:

\n
    \n
  • नेटवर्क विलंबता (अलग प्रक्रिया)
  • \n
  • प्रशासन की आवश्यकता
  • \n
  • बहुत छोटे डेटा वॉल्यूम वाले कैश के लिए उपयुक्त नहीं (कनेक्शन ओवरहेड)
  • \n
\n\n

2. Ehcache — परिपक्व in-process कैश

\n

Ehcache Java के लिए सबसे पुरानी कैशिंग लाइब्रेरी में से एक है। यह JVM के अंदर काम करता है, डिस्क स्टोरेज (BigMemory) और JCache (JSR-107) के साथ पूर्ण संगतता का समर्थन करता है। मोनोलिथिक अनुप्रयोगों के लिए आदर्श।

\n\n

XML के माध्यम से Ehcache कॉन्फ़िगरेशन उदाहरण

\n
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\n        xmlns="http://www.ehcache.org/v3"\n        xsi:schemaLocation="http://www.ehcache.org/v3 http://www.ehcache.org/schema/ehcache-core-3.10.xsd">\n    <cache alias="users">\n        <key-type>java.lang.String</key-type>\n        <value-type>java.lang.String</value-type>\n        <heap>1000</heap>\n        <expiry>\n            <ttl unit="seconds">300</ttl>\n        </expiry>\n    </cache>\n</config>
\n\n

कोड में Ehcache का उपयोग उदाहरण

\n
import org.ehcache.Cache;\nimport org.ehcache.CacheManager;\nimport org.ehcache.config.builders.CacheManagerBuilder;\nimport org.ehcache.xml.XmlConfiguration;\n\npublic class EhcacheExample {\n    public static void main(String[] args) {\n        XmlConfiguration xmlConfig = new XmlConfiguration(\n            EhcacheExample.class.getResource("/ehcache.xml"));\n        try (CacheManager cacheManager = CacheManagerBuilder.newCacheManager(xmlConfig)) {\n            cacheManager.init();\n            Cache<String, String> users = cacheManager.getCache("u                    

अनुशंसाएँ