कैशिंग रणनीतियाँ

Java में कोड ऑप्टिमाइज़ करना

Pavlos Kosmetatos

Lead Engineer @Wealthyhood

कैशिंग क्या है?

कैशिंग वैसी है जैसे अक्सर इस्तेमाल होने वाली सामग्री को किचन काउंटर पर रखना, अलमारी में नहीं - पहुँचना तेज़, पर काउंटर स्पेस सीमित

हम आम तौर पर यह कैश करते हैं:

  • डेटाबेस क्वेरी परिणाम
  • API रिस्पॉन्सेज
  • महँगी कैलकुलेशन
  • अन्य रिसोर्स-इंटेंसिव ऑपरेशंस
Java में कोड ऑप्टिमाइज़ करना

Java में इन-मेमेंरी कैशिंग

// In-memory cache using HashMap
public class SimpleCache<K, V> {
    private final Map<K, V> cache = new HashMap<>();

    public V get(K key) {
        return cache.get(key);
    }

    public void put(K key, V value) {
        cache.put(key, value);
    }
}
Java में कोड ऑप्टिमाइज़ करना

कैश इविक्शन पॉलिसीज़

  • LRU (Least Recently Used)
  • LFU (Least Frequently Used)
  • FIFO (First In, First Out)
  • समय-आधारित एक्सपाइरेशन
  • और भी!
Java में कोड ऑप्टिमाइज़ करना

डिस्ट्रिब्यूटेड कैशिंग के लिए Redis

Redis क्या है:

  • इन-मेमेंरी डेटा स्टोर/कैश
  • डिस्ट्रिब्यूटेड कैश के रूप में बेहतरीन
  • कई डेटा स्ट्रक्चर्स सपोर्ट करता है
  • कई Java क्लाइंट लाइब्रेरीज़ - एक उदाहरण Jedis

Screenshot 2025-05-14 at 6.59.29 PM.png

Java में कोड ऑप्टिमाइज़ करना

Jedis के साथ Redis का उपयोग

import redis.clients.jedis.Jedis;

// Using Jedis client
Jedis jedis = new Jedis("localhost");
jedis.set("key", "value");
String value = jedis.get("key");

अतिरिक्त फीचर्स:

  • कैश्ड आइटम्स का ऑटोमैटिक एक्सपाइरेशन
  • क्लस्टर सपोर्ट
Java में कोड ऑप्टिमाइज़ करना

Redis से समय-आधारित कैश लागू करना

public class RedisTimedCache {
    private final Jedis jedis;

    public RedisTimedCache(String host, int port) {
        this.jedis = new Jedis(host, port);
    }

    public String get(String key) {
        return jedis.get(key);
    }

    public void put(String key, String value, int timeToLiveSeconds) {
        // Sets both the value and expiration time in seconds
        jedis.setex(key, timeToLiveSeconds, value);
    }
}
Java में कोड ऑप्टिमाइज़ करना

सारांश

  • कैशिंग पुनर्गणना से बचने के लिए कम्प्यूटेड रिजल्ट्स स्टोर करती है
  • महँगे ऑपरेशंस और बार-बार एक्सेस होने वाले डेटा के लिए असरदार
  • मेमोरी प्रबंधन के लिए सही इविक्शन पॉलिसी लागू करें
  • मल्टी-सर्वर ऐप्स के लिए डिस्ट्रिब्यूटेड कैशिंग पर विचार करें (जैसे Redis के साथ Jedis)
Java में कोड ऑप्टिमाइज़ करना

अभ्यास करते हैं!

Java में कोड ऑप्टिमाइज़ करना

Preparing Video For Download...