Ehcache এবং Redis এর সাথে Integration

Java এবং MySQL এর মধ্যে Data Caching - জাভা মাইএসকিউএল (Java MySQL) - Database Tutorials

313

Caching হল একটি জনপ্রিয় প্রযুক্তি যা ডেটাবেসের লোড কমানোর জন্য এবং অ্যাপ্লিকেশনের পারফরম্যান্স বাড়ানোর জন্য ব্যবহৃত হয়। Java অ্যাপ্লিকেশনে Ehcache এবং Redis দুটিই জনপ্রিয় ক্যাশিং প্রযুক্তি। এই টিউটোরিয়ালে আমরা দেখবো কিভাবে Ehcache এবং Redis এর সাথে Java MySQL অ্যাপ্লিকেশন ইন্টিগ্রেট করা যায়।


1. Ehcache Integration with Java MySQL

Ehcache একটি সিম্পল এবং শক্তিশালী ইন-মেমরি ক্যাশিং সল্যুশন যা অবজেক্ট বা ডেটা ক্যাশ করার জন্য ব্যবহার করা হয়। MySQL ডেটাবেসের সাথে Ehcache ইন্টিগ্রেট করলে, ডেটাবেস থেকে একাধিক বার একই ডেটা ফেচ করার প্রয়োজনীয়তা কমে যায়, যার ফলে পারফরম্যান্সের উন্নতি ঘটে।

1.1 Ehcache ইনস্টলেশন এবং কনফিগারেশন

  1. Maven Dependency:

    প্রথমে, Ehcache লাইব্রেরি আপনার pom.xml ফাইলে যুক্ত করুন:

    <dependency>
        <groupId>org.ehcache</groupId>
        <artifactId>ehcache</artifactId>
        <version>3.9.0</version>
    </dependency>
    
  2. Ehcache কনফিগারেশন ফাইল তৈরি করা (ehcache.xml):

    একটি ehcache.xml ফাইল তৈরি করুন, যেখানে ক্যাশ পলিসি, সাইজ এবং লাইফটাইম কনফিগার করা হবে।

    <ehcache xmlns="http://www.ehcache.org/v3"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://www.ehcache.org/v3 http://www.ehcache.org/schema/ehcache-core-3.0.xsd">
        <cache alias="userCache">
            <key-type>java.lang.Integer</key-type>
            <value-type>com.myapp.model.User</value-type>
            <heap>1000</heap> <!-- Maximum 1000 entries in heap -->
            <expiry>
                <ttl unit="minutes">10</ttl> <!-- Time to live for 10 minutes -->
            </expiry>
        </cache>
    </ehcache>
    
  3. Ehcache Configuration and Usage in Java Code:

    এখন আপনার Java কোডে Ehcache কনফিগারেশন ব্যবহার করতে হবে। নিম্নলিখিত কোডটি দেখুন:

    import org.ehcache.Cache;
    import org.ehcache.CacheManager;
    import org.ehcache.config.builders.CacheConfigurationBuilder;
    import org.ehcache.config.builders.CacheManagerBuilder;
    import org.ehcache.config.builders.ResourcePoolsBuilder;
    
    public class EhcacheExample {
        public static void main(String[] args) {
            // Ehcache CacheManager তৈরি করা
            CacheManager cacheManager = CacheManagerBuilder.newCacheManagerBuilder().build(true);
    
            // Cache তৈরি করা
            Cache<Integer, User> userCache = cacheManager.createCache("userCache",
                CacheConfigurationBuilder.newCacheConfigurationBuilder(Integer.class, User.class,
                    ResourcePoolsBuilder.heap(1000)));
    
            // User ডেটা ক্যাশে যোগ করা
            userCache.put(1, new User(1, "Alice", 30));
            userCache.put(2, new User(2, "Bob", 25));
    
            // ক্যাশ থেকে ডেটা পড়া
            User user = userCache.get(1);
            System.out.println(user.getName());  // Output: Alice
    
            // ক্যাশ বন্ধ করা
            cacheManager.close();
        }
    }
    
  4. Ehcache ক্যাশ হিট এবং মিস:

    যখন আপনি ডেটাবেস থেকে ডেটা ফেচ করতে যাবেন, তখন প্রথমে ক্যাশে চেক করুন। যদি ডেটা ক্যাশে না থাকে, তখন ডেটাবেস থেকে ডেটা ফেচ করুন এবং ক্যাশে যোগ করুন।

    // ক্যাশ থেকে ডেটা চেক করা
    User cachedUser = userCache.get(userId);
    if (cachedUser == null) {
        // ডেটাবেস থেকে ডেটা ফেচ করা
        User dbUser = fetchFromDatabase(userId);
        userCache.put(userId, dbUser); // ক্যাশে ডেটা যোগ করা
        return dbUser;
    }
    return cachedUser;
    

2. Redis Integration with Java MySQL

Redis হল একটি ওপেন সোর্স ইন-মেমরি ডেটা স্টোর, যা ক্যাশিং, সেশন স্টোরেজ, এবং অন্যান্য ডেটাবেস অপারেশনের জন্য ব্যবহৃত হয়। Redis অধিকাংশ সময় key-value store হিসেবে ব্যবহৃত হয়, এবং এটি খুব দ্রুত কাজ করে, যা পারফরম্যান্সের জন্য আদর্শ।

2.1 Redis ইনস্টলেশন এবং কনফিগারেশন

  1. Redis Java Client (Jedis) Maven Dependency:

    Redis এর সাথে Java অ্যাপ্লিকেশন ইন্টিগ্রেট করতে, Jedis ক্লায়েন্ট লাইব্রেরি ব্যবহার করা হয়। আপনার pom.xml ফাইলে নিম্নলিখিত ডিপেনডেন্সি যোগ করুন:

    <dependency>
        <groupId>redis.clients</groupId>
        <artifactId>jedis</artifactId>
        <version>4.3.0</version>
    </dependency>
    
  2. Redis Connection Setup in Java:

    Java কোডে Redis-এর সাথে কানেকশন স্থাপন করতে হবে:

    import redis.clients.jedis.Jedis;
    
    public class RedisExample {
        public static void main(String[] args) {
            // Redis সার্ভারের সাথে সংযোগ
            Jedis jedis = new Jedis("localhost", 6379);
    
            // ক্যাশে ডেটা যোগ করা
            jedis.set("user:1", "Alice,30");
            jedis.set("user:2", "Bob,25");
    
            // Redis থেকে ডেটা ফেচ করা
            String user = jedis.get("user:1");
            System.out.println(user); // Output: Alice,30
    
            // Redis কানেকশন বন্ধ করা
            jedis.close();
        }
    }
    

2.2 Redis ক্যাশ হিট এবং মিস

Redis ব্যবহার করার সময়, আপনি যদি একই ডেটা একাধিক বার অ্যাক্সেস করেন, তবে তা Redis ক্যাশে থাকা উচিত। প্রথমবার ডেটা না থাকলে, আপনি MySQL ডেটাবেস থেকে ডেটা ফেচ করবেন এবং Redis ক্যাশে সেভ করবেন।

import redis.clients.jedis.Jedis;

public class CachingWithRedis {
    public static User getUser(int userId) {
        Jedis jedis = new Jedis("localhost", 6379);
        
        // Redis ক্যাশে ডেটা চেক করা
        String cachedUser = jedis.get("user:" + userId);
        
        if (cachedUser == null) {
            // ডেটাবেস থেকে ডেটা ফেচ করা
            User dbUser = fetchFromDatabase(userId);
            
            // ডেটা Redis ক্যাশে সেভ করা
            jedis.set("user:" + userId, dbUser.getName() + "," + dbUser.getAge());
            return dbUser;
        }
        
        // Redis ক্যাশ থেকে ডেটা রিটার্ন করা
        String[] userData = cachedUser.split(",");
        return new User(userId, userData[0], Integer.parseInt(userData[1]));
    }
}

2.3 Redis টিপস

  • Redis Expiry: Redis-এ ডেটা সেভ করার সময়, আপনি ক্যাশে ডেটার একটি TTL (Time to Live) নির্ধারণ করতে পারেন, যাতে কিছু সময় পর ডেটা স্বয়ংক্রিয়ভাবে মুছে যায়।

    jedis.setex("user:1", 3600, "Alice,30"); // TTL = 1 hour
    
  • Redis Pipelines: যদি অনেকগুলি Redis অপারেশন একসাথে করতে চান, তাহলে Pipelines ব্যবহার করুন, যা পারফরম্যান্স বাড়ায়।

3. Ehcache এবং Redis ক্যাশের তুলনা

FeatureEhcacheRedis
Storage TypeIn-memory cacheIn-memory key-value store
PersistenceNo persistence (unless configured)Supports persistence (RDB/AOF)
Data StructureObjects, Collections, Custom TypesKey-value pairs, Lists, Sets, etc.
ScalabilityLimited to local JVM memoryScalable, supports clustering
PerformanceVery fast, JVM-basedExtremely fast, optimized for caching

সারাংশ

Ehcache এবং Redis উভয়ই Java MySQL অ্যাপ্লিকেশনে কার্যকরী ক্যাশিং সল্যুশন হিসেবে ব্যবহৃত হতে পারে। Ehcache সিম্পল ইন-মেমরি ক্যাশিং সিস্টেম হিসাবে ব্যবহৃত

Content added By
Promotion

Are you sure to start over?

Loading...