Java Technologies Redis এবং EhCache এর সাথে Integration গাইড ও নোট

257

ক্যাশিং (Caching) একটি গুরুত্বপূর্ণ টেকনিক যা অ্যাপ্লিকেশনের পারফরম্যান্স উন্নত করতে সাহায্য করে। স্প্রিং বুটে Redis এবং EhCache দুটি জনপ্রিয় ক্যাশিং টুল যা ডেটা স্টোরেজের দ্রুত অ্যাক্সেস নিশ্চিত করতে ব্যবহৃত হয়। Redis একটি ইন-মেমরি ডেটাবেস এবং EhCache একটি Java ভিত্তিক ক্যাশিং লাইব্রেরি। এই দুটি প্রযুক্তি স্প্রিং বুটের সঙ্গে ইন্টিগ্রেট করলে আপনার অ্যাপ্লিকেশন দ্রুত পারফরম্যান্স প্রদান করতে সক্ষম হয়।

এই টিউটোরিয়ালে, আমরা দেখব কীভাবে স্প্রিং বুটে Redis এবং EhCache এর সাথে ইন্টিগ্রেশন করা যায়।


Redis এর সাথে স্প্রিং বুট ইন্টিগ্রেশন

Redis একটি ওপেন সোর্স ইন-মেমরি কেস-ভ্যালু ডেটাবেস যা ক্যাশিং এবং ডেটা স্টোরেজের জন্য ব্যবহৃত হয়। স্প্রিং বুট Redis এর সাথে খুব সহজে ইন্টিগ্রেট করা যায়, এবং এটি অ্যাপ্লিকেশনের ডেটা স্টোরেজ অপারেশনের পারফরম্যান্স উন্নত করতে সাহায্য করে।

১. প্রজেক্ট ডিপেনডেন্সি যোগ করা

Redis এর সাথে ইন্টিগ্রেশন করার জন্য আপনাকে spring-boot-starter-data-redis ডিপেনডেন্সি pom.xml ফাইলে যোগ করতে হবে।

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>3.6.0</version>
</dependency>

এখানে spring-boot-starter-data-redis ডিপেনডেন্সি Redis এর জন্য প্রয়োজনীয় ক্লাস এবং কনফিগারেশন দেয় এবং jedis Redis ক্লায়েন্ট লাইব্রেরি হিসেবে ব্যবহৃত হয়।

২. Redis কনফিগারেশন

application.properties ফাইলে Redis কনফিগারেশন যোগ করুন।

spring.redis.host=localhost
spring.redis.port=6379
spring.redis.password=your_password  # যদি Redis সার্ভারের জন্য পাসওয়ার্ড থাকে

৩. RedisTemplate ব্যবহার করা

স্প্রিং বুট Redis এর সাথে যোগাযোগের জন্য RedisTemplate ব্যবহার করা হয়। এটি Redis ডেটা স্টোরেজের সাথে ইন্টারঅ্যাক্ট করতে সাহায্য করে।

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;

@Service
public class RedisService {

    @Autowired
    private RedisTemplate<String, String> redisTemplate;

    public void setData(String key, String value) {
        redisTemplate.opsForValue().set(key, value);
    }

    public String getData(String key) {
        return redisTemplate.opsForValue().get(key);
    }
}

এখানে, setData মেথড Redis এ একটি কেস-ভ্যালু স্টোর করবে এবং getData মেথড সেই কেস-ভ্যালু থেকে ডেটা রিটার্ন করবে।

৪. Redis এর ব্যবহার

আপনি RedisService ক্লাসের মাধ্যমে Redis ক্যাশে ডেটা স্টোর এবং রিট্রিভ করতে পারবেন।

@RestController
@RequestMapping("/redis")
public class RedisController {

    @Autowired
    private RedisService redisService;

    @PostMapping("/set")
    public String setRedisData(@RequestParam String key, @RequestParam String value) {
        redisService.setData(key, value);
        return "Data saved to Redis";
    }

    @GetMapping("/get")
    public String getRedisData(@RequestParam String key) {
        return redisService.getData(key);
    }
}

এখানে setRedisData এবং getRedisData API ব্যবহার করে Redis এ ডেটা সেট এবং রিট্রিভ করা হচ্ছে।


EhCache এর সাথে স্প্রিং বুট ইন্টিগ্রেশন

EhCache একটি Java ভিত্তিক ক্যাশিং লাইব্রেরি যা সাধারণত ইন্ট্রানাল ক্যাশিং এবং মেমরি ক্যাশে ব্যবহৃত হয়। এটি সিম্পল এবং স্কেলেবল ক্যাশিং সলিউশন প্রদান করে। স্প্রিং বুটের সাথে EhCache খুব সহজেই ইন্টিগ্রেট করা যায়।

১. প্রজেক্ট ডিপেনডেন্সি যোগ করা

EhCache ইন্টিগ্রেট করার জন্য spring-boot-starter-cache এবং ehcache ডিপেনডেন্সি pom.xml ফাইলে যোগ করতে হবে।

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-cache</artifactId>
</dependency>

<dependency>
    <groupId>org.ehcache</groupId>
    <artifactId>ehcache</artifactId>
    <version>3.9.6</version>
</dependency>

২. EhCache কনফিগারেশন

application.properties ফাইলে EhCache কনফিগারেশন যোগ করুন।

spring.cache.type=ehcache

৩. EhCache কনফিগারেশন ক্লাস তৈরি করা

এখন আপনাকে একটি ক্যাশ কনফিগারেশন ক্লাস তৈরি করতে হবে, যা EhCache কনফিগার করবে।

import org.ehcache.config.builders.CacheConfigurationBuilder;
import org.ehcache.config.builders.CacheManagerBuilder;
import org.ehcache.config.builders.ResourcePoolsBuilder;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cache.ehcache.EhCacheCacheManager;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@EnableCaching
public class EhCacheConfig {

    @Bean
    public CacheManager cacheManager() {
        org.ehcache.CacheManager ehCacheManager = CacheManagerBuilder.newCacheManagerBuilder()
                .withCache("books",
                        CacheConfigurationBuilder.newCacheConfigurationBuilder(String.class, String.class,
                                ResourcePoolsBuilder.heap(100)))
                .build(true);
        return new EhCacheCacheManager(ehCacheManager);
    }
}

এখানে, cacheManager মেথডটি EhCache কনফিগারেশন তৈরি করে এবং স্প্রিং কন্টেইনারে ক্যাশ ম্যানেজার রেজিস্টার করে।

৪. EhCache ব্যবহার করা

@Cacheable অ্যানোটেশন ব্যবহার করে ক্যাশিং চালু করা যায়। এই অ্যানোটেশনটি মেথডের ফলাফল ক্যাশে সেভ করতে ব্যবহার হয়।

import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;

@Service
public class BookService {

    @Cacheable(value = "books", key = "#id")
    public String getBookById(String id) {
        try {
            Thread.sleep(3000);  // Simulate time-consuming operation
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return "Book " + id;
    }
}

এখানে, getBookById মেথডটি প্রথমবার চালানোর পর ক্যাশে সেভ হবে এবং পরবর্তী কলগুলিতে ক্যাশ থেকে ডেটা রিটার্ন হবে।


সারাংশ

স্প্রিং বুটের সাথে Redis এবং EhCache ক্যাশিং ব্যবস্থার ইন্টিগ্রেশন অ্যাপ্লিকেশনের পারফরম্যান্স অনেক বাড়াতে সহায়তা করে। Redis ব্যবহৃত হয় একাধিক সার্ভারের মধ্যে ডিস্ট্রিবিউটেড ক্যাশিং সমাধান হিসাবে, যেখানে EhCache ব্যবহার করা হয় ইন-মেমরি ক্যাশিং এর জন্য। স্প্রিং বুটের সাহায্যে এই দুটি ক্যাশিং টুল সহজেই ইন্টিগ্রেট করা যায় এবং অ্যাপ্লিকেশনের ডেটা এক্সেস টাইম কমাতে পারে।

Content added By
Promotion

Are you sure to start over?

Loading...