Spring Caching এর ধারণা এবং @Cacheable, @CacheEvict এর ব্যবহার

Spring Caching এবং Performance Optimization - স্প্রিং (Spring) - Java Technologies

372

Spring Caching হলো স্প্রিং ফ্রেমওয়ার্কের একটি ফিচার, যা ডেটা ক্যাশ (Cache) করে অ্যাপ্লিকেশনের পারফরম্যান্স উন্নত করতে সাহায্য করে। ক্যাশিং মূলত ডেটা পুনরায় রিকোয়েস্ট না করে আগে থেকে সংরক্ষিত ডেটা প্রদান করে কার্যকারিতা বাড়ায়।


স্প্রিং ক্যাশিং কেন ব্যবহার করবেন?

  1. Performance Optimization:
    • ডাটাবেস বা API কলের লেটেন্সি কমায়।
  2. Resource Efficiency:
    • বারবার একই ডেটা প্রসেস করার প্রয়োজন নেই।
  3. ইনটিগ্রেশন সহজ:
    • Spring Caching বিভিন্ন ক্যাশিং প্রযুক্তি (EHCache, Hazelcast, Redis) সাপোর্ট করে।
  4. ডেটা পুনরায় ব্যবহার:
    • Frequently accessed ডেটা ক্যাশে সংরক্ষণ করে দ্রুত অ্যাক্সেস নিশ্চিত করে।

Spring Caching এর প্রধান Annotation

  1. @Cacheable: ডেটাকে ক্যাশে সংরক্ষণ করার জন্য ব্যবহৃত হয়।
  2. @CacheEvict: ক্যাশ থেকে ডেটা মুছে ফেলার জন্য ব্যবহৃত হয়।
  3. @CachePut: মেথড এক্সিকিউশনের পরে ক্যাশ আপডেট করতে ব্যবহৃত হয়।
  4. @Caching: একাধিক ক্যাশিং অপারেশন একত্রে সংজ্ঞায়িত করার জন্য ব্যবহৃত হয়।
  5. @EnableCaching: ক্যাশিং সক্রিয় করার জন্য ব্যবহৃত হয়।

উদাহরণ: Spring Caching ব্যবহার

Step 1: Maven ডিপেনডেন্সি

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

Step 2: Configuration ক্লাস তৈরি

AppConfig.java

@Configuration
@EnableCaching
public class AppConfig {
    // Simple Cache Manager (In-Memory Cache) ব্যবহার
    @Bean
    public CacheManager cacheManager() {
        return new ConcurrentMapCacheManager("employees");
    }
}

Step 3: Service ক্লাস তৈরি

EmployeeService.java

@Service
public class EmployeeService {

    private static final Map<Integer, String> database = Map.of(
            1, "John Doe",
            2, "Jane Doe",
            3, "Alice Smith"
    );

    // ক্যাশে ডেটা সংরক্ষণ
    @Cacheable("employees")
    public String getEmployeeById(int id) {
        simulateSlowService();
        return database.getOrDefault(id, "Employee Not Found");
    }

    // ক্যাশ থেকে ডেটা মুছে ফেলা
    @CacheEvict(value = "employees", key = "#id")
    public void removeEmployeeFromCache(int id) {
        System.out.println("Cache evicted for employee ID: " + id);
    }

    private void simulateSlowService() {
        try {
            Thread.sleep(3000); // স্লো প্রসেসিং সিমুলেশন
        } catch (InterruptedException e) {
            Thread.currentThread().interrupt();
        }
    }
}

Step 4: Controller তৈরি

EmployeeController.java

@RestController
@RequestMapping("/employees")
public class EmployeeController {

    @Autowired
    private EmployeeService employeeService;

    @GetMapping("/{id}")
    public String getEmployee(@PathVariable int id) {
        return employeeService.getEmployeeById(id);
    }

    @DeleteMapping("/{id}")
    public String evictCache(@PathVariable int id) {
        employeeService.removeEmployeeFromCache(id);
        return "Cache evicted for employee ID: " + id;
    }
}

Step 5: অ্যাপ্লিকেশন রান করা

MainApplication.java

@SpringBootApplication
public class MainApplication {

    public static void main(String[] args) {
        SpringApplication.run(MainApplication.class, args);
    }
}

আউটপুট

  1. ডেটা ফেচিং: প্রথমবার /employees/1 হিট করলে ৩ সেকেন্ড সময় লাগবে। দ্বিতীয়বার একই রিকোয়েস্ট করলে ক্যাশ থেকে ডেটা আসবে।

    Request 1: "John Doe" (3 সেকেন্ড)
    Request 2: "John Doe" (তাৎক্ষণিক)
    
  2. ক্যাশ মুছে ফেলা: /employees/1 এর জন্য ক্যাশ ইভিক্ট করলে আবার নতুন করে ডেটা লোড হবে।

    Cache evicted for employee ID: 1
    

ব্যাখ্যা

  1. @Cacheable:
    • প্রথমবার মেথড কল হলে রিটার্ন ভ্যালু ক্যাশে সংরক্ষণ করা হয়।
    • পরবর্তী রিকোয়েস্টে একই ডেটা ক্যাশ থেকে প্রদান করা হয়।
  2. @CacheEvict:
    • নির্দিষ্ট ক্যাশ এন্ট্রি মুছে ফেলা হয়।
  3. SimulateSlowService:
    • স্লো প্রসেসিং দেখানোর জন্য ৩ সেকেন্ডের বিলম্ব যোগ করা হয়েছে।
  4. CacheManager:
    • Spring In-Memory Cache ব্যবহার করা হয়েছে।

Spring Caching এর গুরুত্বপূর্ণ টিপস

  1. ক্যাশ সাইজ নিয়ন্ত্রণ করুন:
    • বড় ক্যাশ ডেটা ব্যবহার করলে মেমোরি সমস্যার সম্ভাবনা থাকে।
  2. TTL (Time-to-Live):
    • ক্যাশ ডেটা স্বয়ংক্রিয়ভাবে পুরানো হওয়ার জন্য TTL সেট করুন।
  3. কাস্টম ক্যাশিং স্টোরেজ:
    • প্রোডাকশন অ্যাপ্লিকেশনের জন্য Redis বা EhCache ব্যবহার করুন।
  4. ডিবাগিং সহজ করুন:
    • ক্যাশিং সম্পর্কিত সমস্যাগুলো ডিবাগ করতে লগিং ব্যবহার করুন।

উপসংহার

Spring Caching অ্যাপ্লিকেশনের পারফরম্যান্স বাড়াতে সাহায্য করে। এটি সহজে @Cacheable এবং @CacheEvict এর মাধ্যমে ডেটা ক্যাশ এবং মুছে ফেলার কার্যক্রম পরিচালনা করতে পারে। সঠিক ক্যাশিং ব্যবস্থাপনা অ্যাপ্লিকেশনকে আরও কার্যকর এবং দ্রুতগামী করে তোলে।


Content added By
Promotion

Are you sure to start over?

Loading...