Caching একটি শক্তিশালী প্রযুক্তি যা ওয়েব অ্যাপ্লিকেশনগুলির পারফরম্যান্স উন্নত করতে ব্যবহৃত হয়। Spring Boot তে Caching ব্যবহারের মাধ্যমে আপনি অ্যাপ্লিকেশনের ডেটা দ্রুত এক্সেস করতে পারেন, যা লোড টাইম কমায় এবং সার্ভার রিসোর্সের অপচয় কমায়। এতে অ্যাপ্লিকেশনের কার্যকারিতা এবং স্কেলেবিলিটি বৃদ্ধি পায়।
Spring Boot তে Caching এর প্রয়োজনীয়তা
1. পারফরম্যান্স উন্নয়ন
ক্যাশিং ডেটাকে স্টোর করে রাখে যাতে পরবর্তী অনুরোধে সেগুলি দ্রুত পাওয়া যায়। এটি ডেটাবেস বা অন্যান্য ডেটা সোর্স থেকে বারবার ডেটা আনতে হয় না, ফলে অ্যাপ্লিকেশনটি দ্রুত রেসপন্ড করে।
- উদাহরণ: ধরুন, একটি ইউজার ইনফরমেশন বারবার ডেটাবেস থেকে ফেরত আনা হচ্ছে। কিন্তু যদি সেই ইনফরমেশন একবার ক্যাশে রাখা হয়, তাহলে পরবর্তী অনুরোধগুলো ক্যাশ থেকেই পাওয়া যাবে এবং ডেটাবেস কলের প্রয়োজন হবে না।
@Cacheable("users")
public User getUserById(Long userId) {
// Database call here
return userRepository.findById(userId).orElse(null);
}
এখানে, @Cacheable অ্যনোটেশনটি নিশ্চিত করবে যে getUserById() মেথডের ফলাফল ক্যাশে সঞ্চিত হবে এবং পরবর্তী অনুরোধে ডেটাবেস কল না করেই তা সরাসরি ক্যাশ থেকে ফেরত আসবে।
2. লোড টাইম কমানো
প্রতিটি ডেটা প্রক্রিয়াকরণ এবং সার্ভারে বিভিন্ন অনুরোধের জন্য নতুনভাবে ডেটা পাওয়ার পরিবর্তে ক্যাশিং ব্যবহার করলে সিস্টেমের লোড টাইম অনেক কমে যায়। এটি ব্যবহারকারীর অভিজ্ঞতা উন্নত করে এবং অ্যাপ্লিকেশনের প্রতিক্রিয়া আরও দ্রুত করে তোলে।
- উদাহরণ: একটি ওয়েব পেজে একাধিক ডেটাবেস কল করা হচ্ছে। যদি সেই পেজের কিছু অংশের ডেটা পরিবর্তন না হয়, তবে ক্যাশিং ব্যবহার করে ডেটা আগেই লোড করা যায়, যাতে পুনরায় সেই ডেটা লোড না হয়।
3. ডেটাবেস লোড কমানো
ডেটাবেসের ওপর অতিরিক্ত চাপ কমাতে ক্যাশিং গুরুত্বপূর্ণ ভূমিকা পালন করে। ক্যাশিং ডেটাবেসের অনুরোধগুলিকে হালনাগাদ রাখে এবং সিস্টেমকে খুব দ্রুত পরিচালিত করতে সহায়তা করে। এটি অ্যাপ্লিকেশন এবং ডেটাবেসের মধ্যে ভারসাম্য তৈরি করে।
- উদাহরণ: একটি ব্যবহারকারী বারবার একটি পেইজ এক্সেস করে যেখানে একই ডেটা থাকে। ডেটাবেসে বারবার একই তথ্য অনুসন্ধান না করে, ক্যাশে সেই ডেটা রাখা হলে, ডেটাবেসের অনুরোধ কমে যাবে এবং পারফরম্যান্স উন্নত হবে।
4. রিসোর্স অপ্টিমাইজেশন
ক্যাশিং ব্যবহারের ফলে সার্ভার এবং ডেটাবেসের রিসোর্স অপটিমাইজ হয়, কারণ বারবার ডেটা রিকোয়েস্টের প্রয়োজন হয় না। এটি অ্যাপ্লিকেশনের স্কেলেবিলিটি এবং স্থিতিস্থাপকতা (resilience) বাড়ায়।
- উদাহরণ: একটি API কলের মাধ্যমে অনেক ডেটা সংগ্রহ করা হচ্ছে, তবে ক্যাশিং সেটি স্টোর করে রাখবে, যাতে একই ডেটা আবার রিকোয়েস্ট করা হলে নতুনভাবে তা ডাউনলোড করার প্রয়োজন না পড়ে।
5. ক্যাশে কন্ট্রোল এবং ডিস্কাউন্টিং
Spring Boot Caching আপনাকে ক্যাশে কন্ট্রোল করতে সাহায্য করে, যেমন ক্যাশে এক্সপায়ারি, রিফ্রেশিং এবং ক্লিনআপ। এর মাধ্যমে আপনার অ্যাপ্লিকেশনের সিস্টেম রিসোর্স অপচয় কমে এবং সঠিক সময়ের মধ্যে ক্যাশে ডেটা আবার রিফ্রেশ হতে পারে।
- উদাহরণ: কোনো পণ্য বা সেবার মূল্য ক্যাশে রাখা হলে, সেই পণ্য বা সেবার মূল্য পরিবর্তন হলে ক্যাশের ডেটা পুনরায় আপডেট করা যেতে পারে।
@Cacheable(value = "products", key = "#productId", unless = "#result == null")
public Product getProductById(Long productId) {
return productRepository.findById(productId).orElse(null);
}
এখানে, unless = "#result == null" শর্তটি নিশ্চিত করে যে যদি কোনো প্রোডাক্ট না পাওয়া যায়, তবে ক্যাশে কিছুই সেভ হবে না।
Spring Boot তে Caching কনফিগারেশন
Spring Boot অ্যাপ্লিকেশনে Caching কনফিগার করার জন্য কিছু স্টেপ রয়েছে। এখানে কিভাবে Spring Boot এ Caching সেটআপ করবেন তা দেখানো হলো।
1. Spring Boot Caching ইন্টিগ্রেশন
Spring Boot-এ ক্যাশিং ব্যবহার করতে প্রথমে spring-boot-starter-cache ডিপেনডেন্সি যোগ করতে হবে।
Maven ডিপেনডেন্সি:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
Gradle ডিপেনডেন্সি:
implementation 'org.springframework.boot:spring-boot-starter-cache'
2. Caching Enable করা
Spring Boot অ্যাপ্লিকেশন ক্লাসে @EnableCaching অ্যনোটেশন যোগ করতে হবে, যাতে Spring Caching সিস্টেম সক্ষম হয়।
@SpringBootApplication
@EnableCaching
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
3. ক্যাশ কনফিগারেশন
Spring Boot-এ ক্যাশিং কনফিগারেশনের জন্য আপনি application.properties বা application.yml ফাইলে কিছু সেটিংস করতে পারেন। উদাহরণস্বরূপ, হ্যাজেলক্যাশ (Hazelcast) বা কফি (Caffeine) ক্যাশ ম্যানেজার ব্যবহার করতে পারেন।
spring.cache.type=caffeine
এটি Caffeine ক্যাশ ম্যানেজার ব্যবহার করবে।
4. ক্যাশ সঞ্চালন
Spring Boot Caching ব্যবহারের জন্য বিভিন্ন কৌশল ব্যবহার করা যেতে পারে যেমন @Cacheable, @CachePut, এবং @CacheEvict:
- @Cacheable: একটি মেথডের ফলাফল ক্যাশে সঞ্চিত হয়।
- @CachePut: ক্যাশে ডেটা আপডেট করার জন্য ব্যবহৃত হয়।
- @CacheEvict: ক্যাশ থেকে ডেটা মুছে ফেলার জন্য ব্যবহৃত হয়।
সারাংশ
Spring Boot তে Caching ব্যবহারের মাধ্যমে অ্যাপ্লিকেশনের পারফরম্যান্স এবং স্কেলেবিলিটি বৃদ্ধি পায়। ক্যাশিং ডেটার পুনরাবৃত্তি রিডাক্ট করে, ডেটাবেসের লোড কমিয়ে দেয় এবং অ্যাপ্লিকেশনকে দ্রুত প্রতিক্রিয়া দিতে সাহায্য করে। Spring Boot Caching ব্যবহারের জন্য বিভিন্ন ক্যাশ ম্যানেজার এবং কনফিগারেশন ব্যবহারের সুযোগ রয়েছে, যা আপনার অ্যাপ্লিকেশনকে আরও দক্ষ এবং গতিশীল করে তোলে।
Read more