মেমোরিস্টোর সহ একটি স্প্রিং বুট অ্যাপ থেকে ক্যাশে ডেটা

1. ওভারভিউ

রেডিসের জন্য মেমোরিস্টোর হল Google ক্লাউডের জন্য একটি সম্পূর্ণরূপে পরিচালিত Redis পরিষেবা৷ Google ক্লাউডে চলমান অ্যাপগুলি জটিল রেডিস স্থাপনা পরিচালনার বোঝা ছাড়াই অত্যন্ত মাপযোগ্য, উপলব্ধ, এবং সুরক্ষিত রেডিস পরিষেবার ব্যবহার করে চরম কার্যক্ষমতা অর্জন করতে পারে। স্প্রিং বুট অ্যাপের কর্মক্ষমতা উন্নত করতে এটি ডেটা ক্যাশিংয়ের জন্য ব্যাকএন্ড হিসাবে ব্যবহার করা যেতে পারে। কোডল্যাব ব্যাখ্যা করে কিভাবে এটি সেট আপ করতে হয়।

আপনি কি শিখবেন

  • স্প্রিং বুট অ্যাপের জন্য ক্যাশে ব্যাকএন্ড হিসাবে মেমোরিস্টোর কীভাবে ব্যবহার করবেন।

আপনি কি প্রয়োজন হবে

  • একটি Google ক্লাউড প্রকল্প
  • একটি ব্রাউজার, যেমন গুগল ক্রোম
  • Vim, Emacs এবং GNU Nano-এর মতো স্ট্যান্ডার্ড লিনাক্স টেক্সট এডিটরদের সাথে পরিচিতি

আপনি কিভাবে কোডল্যাব ব্যবহার করবেন?

শুধু পড়ুন পড়ুন এবং ব্যায়াম সম্পূর্ণ করুন

আপনি Google ক্লাউড পরিষেবাগুলির সাথে আপনার অভিজ্ঞতাকে কীভাবে মূল্যায়ন করবেন?

নবজাতক মধ্যবর্তী দক্ষ

2. সেটআপ এবং প্রয়োজনীয়তা

স্ব-গতিসম্পন্ন পরিবেশ সেটআপ

  1. ক্লাউড কনসোলে সাইন ইন করুন এবং একটি নতুন প্রকল্প তৈরি করুন বা বিদ্যমান একটি পুনরায় ব্যবহার করুন৷ (যদি আপনার ইতিমধ্যেই একটি Gmail বা G Suite অ্যাকাউন্ট না থাকে তবে আপনাকে অবশ্যই একটি তৈরি করতে হবে।)

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCemXuD0pdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCemXuD0pdYncY5Gv3GU Zw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLpGtQd5Q55

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3oK3o67gCu67jCGUJCGUX67j

প্রজেক্ট আইডিটি মনে রাখবেন, সমস্ত Google ক্লাউড প্রকল্প জুড়ে একটি অনন্য নাম (উপরের নামটি ইতিমধ্যে নেওয়া হয়েছে এবং আপনার জন্য কাজ করবে না, দুঃখিত!)। এটি পরে এই কোডল্যাবে PROJECT_ID হিসাবে উল্লেখ করা হবে।

  1. এর পরে, Google ক্লাউড সংস্থানগুলি ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং সক্ষম করতে হবে৷

এই কোডল্যাবের মাধ্যমে চালানোর জন্য খুব বেশি খরচ করা উচিত নয়, যদি কিছু থাকে। "ক্লিনিং আপ" বিভাগে যে কোনও নির্দেশাবলী অনুসরণ করতে ভুলবেন না যা আপনাকে কীভাবে সংস্থানগুলি বন্ধ করতে হবে তা পরামর্শ দেয় যাতে আপনি এই টিউটোরিয়ালের বাইরে বিলিং করতে না পারেন৷ Google ক্লাউডের নতুন ব্যবহারকারীরা $300USD ফ্রি ট্রায়াল প্রোগ্রামের জন্য যোগ্য৷

ক্লাউড শেল সক্রিয় করুন

  1. ক্লাউড কনসোল থেকে, ক্লাউড শেল সক্রিয় করুন ক্লিক করুন H7JlbhKGHITmsxhQIcLwoe5HXZMhDlYue4K-SPszMxUxDjIeWfOHBfxDHYpmLQTzUmQ7Xx8o6OJUlANnQF0iBuUyfp1RzVad_4nCa0ZFZkWt2QLZWR5 dgUDQ .

zlNW0HehB_AFW1qZ4AyebSQUdWm95n7TbnOr7UVm3j9dFcg6oWApJRlC0jnU1Mvb- IQp-trP1Px8xKNwt6o3pP6fyih947sEhOFGUXM2QUZQ4 2ecHrbzQ

আপনি যদি আগে কখনও ক্লাউড শেল শুরু না করে থাকেন, তাহলে আপনাকে একটি মধ্যবর্তী স্ক্রীন (ভাঁজের নীচে) উপস্থাপন করা হবে যা বর্ণনা করে। যদি এটি হয়, তবে চালিয়ে যান ক্লিক করুন (এবং আপনি এটি আর কখনও দেখতে পাবেন না)। এককালীন স্ক্রীনটি দেখতে কেমন তা এখানে রয়েছে:

kEPbNAo_w5C_pi9QvhFwWwky1cX8hr_xEMGWySNIoMCdi-Djx9AQRqWn-__DmEpC7vKgUtl-feTcv-wBxJ8NwzzAp7mY65-fi2LJo4twUoew65-fi2LJo4twUoew65-fi2LJo4twUoew6rq-13SUj

ক্লাউড শেলের সাথে সংযোগ করতে এবং সংযোগ করতে এটির মাত্র কয়েক মুহূর্ত লাগবে৷

pTv5mEKzWMWp5VBrg2eGcuRPv9dLInPToS-mohlrqDASyYGWnZ_SwE-MzOWHe76ZdCSmw0kgWogSJv27lrQE8pvA5OD6P1I47nz8vrAdK7OD6P1I47nz8vrAdK7yPgxyPvR8 hA

এই ভার্চুয়াল মেশিনটি আপনার প্রয়োজনীয় সমস্ত ডেভেলপমেন্ট টুল দিয়ে লোড করা হয়েছে। এটি একটি ক্রমাগত 5GB হোম ডিরেক্টরি অফার করে এবং Google ক্লাউডে চলে, যা নেটওয়ার্ক কর্মক্ষমতা এবং প্রমাণীকরণকে ব্যাপকভাবে উন্নত করে। এই কোডল্যাবে আপনার অনেক কাজ, যদি সব না হয়, শুধুমাত্র একটি ব্রাউজার বা আপনার Chromebook দিয়ে করা যেতে পারে।

একবার ক্লাউড শেলের সাথে সংযুক্ত হয়ে গেলে, আপনি দেখতে পাবেন যে আপনি ইতিমধ্যেই প্রমাণীকরণ করেছেন এবং প্রকল্পটি ইতিমধ্যে আপনার প্রকল্প আইডিতে সেট করা আছে।

  1. আপনি প্রমাণীকৃত কিনা তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
gcloud auth list

কমান্ড আউটপুট

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
gcloud config list project

কমান্ড আউটপুট

[core]
project = <PROJECT_ID>

যদি এটি না হয়, আপনি এই কমান্ড দিয়ে এটি সেট করতে পারেন:

gcloud config set project <PROJECT_ID>

কমান্ড আউটপুট

Updated property [core/project].

3. রেডিস উদাহরণের জন্য একটি মেমোরিস্টোর সেট আপ করুন

ক্লাউড শেল শুরু করুন।

ক্লাউড শেল চালু হওয়ার পরে, মেমোরিস্টোর API সক্ষম করতে এবং একটি নতুন মেমোরিস্টোর উদাহরণ তৈরি করতে কমান্ড লাইনটি ব্যবহার করুন।

$ gcloud services enable redis.googleapis.com
$ gcloud redis instances create myinstance --size=1 --region=us-central1

অপারেশন শেষ হওয়ার পরে, আপনার উদাহরণ ব্যবহারের জন্য প্রস্তুত হবে।

নিম্নলিখিত কমান্ডটি চালানোর মাধ্যমে উদাহরণের redis হোস্ট আইপি-ঠিকানা পান। আপনার স্প্রিং বুট অ্যাপটি কনফিগার করার সময় আপনি এটি পরে আবার ব্যবহার করবেন।

$ gcloud redis instances describe myinstance --region=us-central1 \
  | grep host
host: 10.0.0.4

Google ক্লাউড কনসোলে, ডেটাবেস > মেমোরিস্টোর > রেডিস- এ নেভিগেট করুন। আপনার উদাহরণ "প্রস্তুত" অবস্থায় থাকা উচিত:

ee90b43f15a6dc1f.png

4. একটি কম্পিউট ইঞ্জিন উদাহরণ সেট আপ করুন৷

একই অঞ্চলে একটি কম্পিউট ইঞ্জিন উদাহরণ তৈরি করুন।

$ gcloud compute instances create instance-1 --zone us-central1-c

অপারেশন শেষ হওয়ার পরে, আপনার উদাহরণ ব্যবহারের জন্য প্রস্তুত হবে।

নিম্নলিখিত কমান্ডের সাথে SSH এর মাধ্যমে আপনার উদাহরণের সাথে সংযোগ করুন:

$ gcloud compute ssh instance-1 --zone us-central1-c

বিকল্পভাবে, Compute > Compute Engine > VM ইনস্ট্যান্সে নেভিগেট করুন এবং কানেক্ট কলামে SSH-এ ক্লিক করুন:

a87bd437a0c8c7b4.png

ভার্চুয়াল মেশিনে (ভিএম) ইনস্ট্যান্স শেল (ক্লাউড শেল নয়), OpenJDK, Maven এবং Redis টুল ইনস্টল করুন:

$ sudo apt-get install openjdk-17-jdk-headless maven redis-tools

ইনস্টলেশন সম্পূর্ণ হওয়ার জন্য অপেক্ষা করুন এবং তারপরে পরবর্তী ধাপে এগিয়ে যান।

5. একটি স্প্রিং বুট অ্যাপ সেট আপ করুন৷

web , redis এবং cache নির্ভরতা সহ একটি নতুন স্প্রিং বুট প্রকল্প তৈরি করুন:

$ curl https://start.spring.io/starter.tgz \
  -d dependencies=web,redis,cache -d language=java -d baseDir=cache-app \
  -d type=maven-project \
  | tar -xzvf - && cd cache-app

রেডিস হোস্টের জন্য মেমোরিস্টোর ইনস্ট্যান্সের আইপি ঠিকানা ব্যবহার করতে অ্যাপটি কনফিগার করতে application.properties ফাইলটি সম্পাদনা করুন।

$ nano src/main/resources/application.properties

রেডিস আইপি ঠিকানার জন্য আপনার মেমোরিস্টোরের সাথে নিম্নলিখিত লাইন যুক্ত করুন (কয়েক ধাপ আগে থেকে):

spring.data.redis.host=<memorystore-host-ip-address> 

এর পরে একটি নতুন লাইন যুক্ত করুন এবং একটি REST কন্ট্রোলার জাভা ক্লাস তৈরি করুন:

$ nano src/main/java/com/example/demo/HelloWorldController.java

ফাইলে নিম্নলিখিত বিষয়বস্তু রাখুন:

package com.example.demo;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloWorldController {
@Autowired
private StringRedisTemplate template;

@RequestMapping("/hello/{name}")
@Cacheable("hello")
public String hello(@PathVariable String name) throws InterruptedException {
  Thread.sleep(5000);
  return "Hello " + name;
 }
}

@RequestMapping টীকাটি একটি HTTP এন্ডপয়েন্ট হিসাবে পদ্ধতিটিকে প্রকাশ করে এবং একটি পদ্ধতির প্যারামিটারে (যেমন @PathVariable টীকা দ্বারা নির্দেশিত) পথের অংশ ম্যাপ করে।

@Cacheable("hello") টীকাটি নির্দেশ করে যে পদ্ধতি সম্পাদনটি ক্যাশে করা উচিত এবং ক্যাশের নাম " hello ।" এটি একটি ক্যাশে কী হিসাবে প্যারামিটার মানের সাথে একত্রে ব্যবহৃত হয়। আপনি কোড ল্যাবে পরে একটি উদাহরণ দেখতে পাবেন।

এর পরে, আমরা স্প্রিং বুট অ্যাপ ক্লাসে ক্যাশিং সক্ষম করব। DemoApplication.java সম্পাদনা করুন:

$ nano src/main/java/com/example/demo/DemoApplication.java

org.springframework.cache.annotation.EnableCaching ইমপোর্ট করুন এবং এই টীকা দিয়ে ক্লাসটি টীকা করুন। ফলাফল এই মত হওয়া উচিত:

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;

@SpringBootApplication
@EnableCaching
public class DemoApplication {

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

6. অ্যাপটি চালান এবং এন্ডপয়েন্ট অ্যাক্সেস করুন

নিশ্চিত করুন, JAVA_HOME সঠিক সংস্করণে সেট করা আছে:

export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/

এখন আপনি অ্যাপটি চালানোর জন্য প্রস্তুত!

$ mvn spring-boot:run

আপনার উদাহরণে অন্য SSH সংযোগ খুলুন যেভাবে আপনি আগে করেছিলেন। নতুন SSH উইন্ডোতে, নাম হিসাবে " bob " পাস করে একাধিকবার /hello/ এন্ডপয়েন্ট অ্যাক্সেস করুন।

$ time curl http://localhost:8080/hello/bob
Hello bob!

real        0m5.408s
user        0m0.036s
sys        0m0.009s

$ time curl http://localhost:8080/hello/bob
Hello bob!

real        0m0.092s
user        0m0.021s
sys        0m0.027s

লক্ষ্য করুন যে প্রথমবার অনুরোধটি পাঁচ সেকেন্ড সময় নিয়েছিল, কিন্তু পরেরটি উল্লেখযোগ্যভাবে দ্রুত ছিল যদিও আপনার পদ্ধতিতে Thread.sleep(5000) আহ্বান রয়েছে। কারণ প্রকৃত পদ্ধতিটি শুধুমাত্র একবার কার্যকর করা হয়েছিল এবং ফলাফলটি ক্যাশে রাখা হয়েছিল। প্রতিটি পরবর্তী কল সরাসরি ক্যাশে থেকে ফলাফল প্রদান করে।

7. ক্যাশ করা বস্তুর পর্যালোচনা করুন

আপনি আসলে দেখতে পারেন ঠিক কি অ্যাপটি ক্যাশ করেছে। আপনি আগের ধাপে যে টার্মিনালটি ব্যবহার করেছিলেন সেই একই টার্মিনাল থেকে, redis-cli ব্যবহার করে Redis হোস্টের জন্য Memorystore-এর সাথে সংযোগ করুন:

$ redis-cli -h <memorystore-host-ip-address>

ক্যাশে কীগুলির তালিকা দেখতে, নিম্নলিখিত কমান্ডটি ব্যবহার করুন:

:6379> KEYS *
1) "hello::bob"

আপনি দেখতে পাচ্ছেন, ক্যাশের নামটি কী-এর উপসর্গ হিসাবে ব্যবহৃত হয় এবং পরামিতি মানটি দ্বিতীয় অংশ হিসাবে ব্যবহৃত হয়।

মান পুনরুদ্ধার করতে, GET কমান্ড ব্যবহার করুন:

:6379> GET hello::bob
   Hello bob!

প্রস্থান করার জন্য exit কমান্ড ব্যবহার করুন।

8. পরিষ্কার করুন

পরিষ্কার করতে, ক্লাউড শেল থেকে কম্পিউট ইঞ্জিন এবং মেমোরিস্টোর দৃষ্টান্তগুলি মুছুন।

গণনা উদাহরণ মুছুন:

$ gcloud compute instances delete instance-1 --zone us-central1-c

Redis উদাহরণের জন্য Memorystore মুছুন:

$ gcloud redis instances delete myinstance --region=us-central1

9. অভিনন্দন!

আপনি রেডিস এবং একটি কম্পিউট ইঞ্জিন উদাহরণের জন্য মেমোরিস্টোর তৈরি করেছেন। এছাড়াও, আপনি স্প্রিং বুট ক্যাশিং সহ মেমোরিস্টোর ব্যবহার করার জন্য একটি স্প্রিং বুট অ্যাপ কনফিগার করেছেন!

আরও জানুন

লাইসেন্স

এই কাজটি ক্রিয়েটিভ কমন্স অ্যাট্রিবিউশন 2.0 জেনেরিক লাইসেন্সের অধীনে লাইসেন্সপ্রাপ্ত।