जावा में कैशिंग: 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
1. Redis — वितरित कैश
\nRedis एक in-memory डेटा स्टोर है जो एक अलग सर्वर के रूप में काम करता है। यह जटिल डेटा संरचनाओं (स्ट्रिंग्स, लिस्ट्स, सेट्स, हैशेज़) और कुंजियों की समाप्ति अवधि (TTL) तंत्र का समर्थन करता है। Java के लिए Jedis या Lettuce क्लाइंट का उपयोग किया जाता है।
Redis का Jedis के साथ उपयोग उदाहरण
\nimport 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\nRedis के लाभ:
\n- \n
- क्लस्टरिंग और प्रतिकृति का समर्थन \n
- स्थायित्व (RDB, AOF) \n
- समृद्ध कमांड सेट (INCR, SORT, PUB/SUB) \n
spring-boot-starter-data-redisके माध्यम से Spring Boot के साथ उत्कृष्ट एकीकरण \n
नुकसान:
\n- \n
- नेटवर्क विलंबता (अलग प्रक्रिया) \n
- प्रशासन की आवश्यकता \n
- बहुत छोटे डेटा वॉल्यूम वाले कैश के लिए उपयुक्त नहीं (कनेक्शन ओवरहेड) \n
2. Ehcache — परिपक्व in-process कैश
\nEhcache Java के लिए सबसे पुरानी कैशिंग लाइब्रेरी में से एक है। यह JVM के अंदर काम करता है, डिस्क स्टोरेज (BigMemory) और JCache (JSR-107) के साथ पूर्ण संगतता का समर्थन करता है। मोनोलिथिक अनुप्रयोगों के लिए आदर्श।
\n\nXML के माध्यम से 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 का उपयोग उदाहरण
\nimport 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