1. Tổng quan
Memorystore for Redis là một dịch vụ Redis được quản lý toàn diện cho Google Cloud. Các ứng dụng chạy trên Google Cloud có thể đạt được hiệu suất cực cao bằng cách tận dụng dịch vụ Redis có tính bảo mật, khả năng đáp ứng và khả năng mở rộng cao mà không phải chịu gánh nặng quản lý các hoạt động triển khai Redis phức tạp. Bạn có thể dùng Redis làm một phần phụ trợ để lưu dữ liệu vào bộ nhớ đệm nhằm cải thiện hiệu suất của các ứng dụng Spring Boot. Lớp học lập trình này giải thích cách thiết lập.
Kiến thức bạn sẽ học được
- Cách sử dụng Memorystore làm phụ trợ bộ nhớ đệm cho ứng dụng Spring Boot.
Bạn cần có
- Một dự án trên Google Cloud
- Một trình duyệt, chẳng hạn như Google Chrome
- Làm quen với các trình chỉnh sửa văn bản tiêu chuẩn của Linux như Vim, Emacs và GNU Nano
Bạn sẽ sử dụng lớp học lập trình này như thế nào?
Bạn đánh giá thế nào về trải nghiệm của mình khi sử dụng các dịch vụ của Google Cloud?
2. Thiết lập và yêu cầu
Thiết lập môi trường theo tốc độ của riêng bạn
- Đăng nhập vào Cloud Console rồi tạo một dự án mới hoặc sử dụng lại một dự án hiện có. (Nếu chưa có tài khoản Gmail hoặc G Suite, bạn phải tạo một tài khoản.)
Hãy nhớ mã dự án, một tên duy nhất trên tất cả các dự án trên Google Cloud (tên ở trên đã được sử dụng và sẽ không hoạt động đối với bạn, xin lỗi!). Sau này trong lớp học lập trình này, chúng ta sẽ gọi nó là PROJECT_ID.
- Tiếp theo, bạn cần bật tính năng thanh toán trong Cloud Console để sử dụng các tài nguyên của Google Cloud.
Việc thực hiện lớp học lập trình này sẽ không tốn nhiều chi phí, nếu có. Hãy nhớ làm theo mọi hướng dẫn trong phần "Dọn dẹp" để biết cách tắt các tài nguyên nhằm tránh bị tính phí ngoài phạm vi hướng dẫn này. Người dùng mới của Google Cloud đủ điều kiện tham gia chương trình Dùng thử miễn phí trị giá 300 USD.
Kích hoạt Cloud Shell
- Trong Cloud Console, hãy nhấp vào Kích hoạt Cloud Shell
.
Nếu chưa từng khởi động Cloud Shell, bạn sẽ thấy một màn hình trung gian (bên dưới phần hiển thị đầu tiên) mô tả về Cloud Shell. Nếu vậy, hãy nhấp vào Tiếp tục (và bạn sẽ không bao giờ thấy màn hình này nữa). Sau đây là giao diện của màn hình xuất hiện một lần:
Quá trình cung cấp và kết nối với Cloud Shell chỉ mất vài giây.
Máy ảo này được trang bị tất cả các công cụ phát triển mà bạn cần. Nền tảng này cung cấp một thư mục chính có dung lượng 5 GB và chạy trong Google Cloud, giúp tăng cường đáng kể hiệu suất mạng và hoạt động xác thực. Bạn có thể thực hiện hầu hết, nếu không muốn nói là tất cả, công việc trong lớp học lập trình này chỉ bằng một trình duyệt hoặc Chromebook.
Sau khi kết nối với Cloud Shell, bạn sẽ thấy rằng mình đã được xác thực và dự án đã được đặt thành mã dự án của bạn.
- Chạy lệnh sau trong Cloud Shell để xác nhận rằng bạn đã được xác thực:
gcloud auth list
Đầu ra của lệnh
Credentialed Accounts
ACTIVE ACCOUNT
* <my_account>@<my_domain.com>
To set the active account, run:
$ gcloud config set account `ACCOUNT`
gcloud config list project
Đầu ra của lệnh
[core] project = <PROJECT_ID>
Nếu không, bạn có thể đặt nó bằng lệnh sau:
gcloud config set project <PROJECT_ID>
Đầu ra của lệnh
Updated property [core/project].
3. Thiết lập một phiên bản Memorystore for Redis
Khởi động Cloud Shell.
Sau khi Cloud Shell khởi chạy, hãy sử dụng dòng lệnh để bật Memorystore API và tạo một phiên bản Memorystore mới.
$ gcloud services enable redis.googleapis.com $ gcloud redis instances create myinstance --size=1 --region=us-central1
Sau khi hoàn tất thao tác, phiên bản của bạn sẽ sẵn sàng sử dụng.
Lấy địa chỉ IP máy chủ lưu trữ redis của phiên bản bằng cách chạy lệnh sau. Bạn sẽ sử dụng lại khoá này sau khi định cấu hình ứng dụng Spring Boot.
$ gcloud redis instances describe myinstance --region=us-central1 \ | grep host host: 10.0.0.4
Trong Google Cloud Console, hãy chuyển đến Cơ sở dữ liệu > Memorystore > Redis. Phiên bản của bạn phải ở trạng thái "sẵn sàng":

4. Thiết lập một phiên bản Compute Engine
Tạo một phiên bản Compute Engine ở cùng khu vực.
$ gcloud compute instances create instance-1 --zone us-central1-c
Sau khi hoàn tất thao tác, phiên bản của bạn sẽ sẵn sàng sử dụng.
Kết nối với phiên bản của bạn qua SSH bằng lệnh sau:
$ gcloud compute ssh instance-1 --zone us-central1-c
Ngoài ra, hãy chuyển đến phần Compute > Compute Engine > Phiên bản máy ảo rồi nhấp vào SSH trong cột Kết nối:

Trong trình bao của phiên bản máy ảo (VM) (không phải Cloud Shell), hãy cài đặt OpenJDK, Maven và các công cụ Redis:
$ sudo apt-get install openjdk-17-jdk-headless maven redis-tools
Vui lòng chờ quá trình cài đặt hoàn tất rồi chuyển sang bước tiếp theo.
5. Thiết lập ứng dụng Spring Boot
Tạo một dự án Spring Boot mới có các phần phụ thuộc web, redis và 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
Chỉnh sửa tệp application.properties để định cấu hình ứng dụng sử dụng địa chỉ IP của phiên bản Memorystore cho máy chủ lưu trữ Redis.
$ nano src/main/resources/application.properties
Thêm dòng sau đây bằng địa chỉ IP Memorystore for Redis của bạn (từ một vài bước trước):
spring.data.redis.host=<memorystore-host-ip-address>
Thêm một dòng mới sau đó và tạo một lớp Java của trình điều khiển REST:
$ nano src/main/java/com/example/demo/HelloWorldController.java
Đưa nội dung sau vào tệp:
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;
}
}
Chú giải @RequestMapping hiển thị phương thức dưới dạng một điểm cuối HTTP và ánh xạ một phần của đường dẫn đến một tham số phương thức (như được chỉ ra bằng chú giải @PathVariable).
Chú thích @Cacheable("hello") cho biết quá trình thực thi phương thức phải được lưu vào bộ nhớ đệm và tên bộ nhớ đệm là "hello". Chú thích này được dùng kết hợp với giá trị tham số làm khoá bộ nhớ đệm. Bạn sẽ thấy ví dụ về việc này sau trong lớp học lập trình.
Tiếp theo, chúng ta sẽ bật tính năng lưu vào bộ nhớ đệm trong lớp ứng dụng Spring Boot. Chỉnh sửa DemoApplication.java:
$ nano src/main/java/com/example/demo/DemoApplication.java
Nhập org.springframework.cache.annotation.EnableCaching và chú thích lớp bằng chú thích này. Kết quả sẽ có dạng như sau:
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. Chạy ứng dụng và truy cập vào điểm cuối
Đảm bảo rằng JAVA_HOME được đặt thành phiên bản phù hợp:
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/
Giờ thì bạn đã sẵn sàng chạy ứng dụng!
$ mvn spring-boot:run
Mở một kết nối SSH khác đến phiên bản của bạn theo cách mà bạn đã làm trước đó. Trong cửa sổ SSH mới, hãy truy cập vào điểm cuối /hello/ nhiều lần, truyền "bob" làm tên.
$ 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
Lưu ý rằng lần đầu tiên yêu cầu mất 5 giây, nhưng lần tiếp theo nhanh hơn đáng kể mặc dù bạn có lệnh gọi Thread.sleep(5000) trong phương thức. Đó là vì phương thức thực tế chỉ được thực thi một lần và kết quả được đưa vào bộ nhớ đệm. Mọi lệnh gọi tiếp theo đều trả về kết quả trực tiếp từ bộ nhớ đệm.
7. Xem xét các đối tượng được lưu vào bộ nhớ đệm
Bạn có thể xem chính xác nội dung mà ứng dụng đã lưu vào bộ nhớ đệm. Từ cùng một thiết bị đầu cuối mà bạn đã dùng ở bước trước, hãy kết nối với máy chủ lưu trữ Memorystore for Redis bằng redis-cli:
$ redis-cli -h <memorystore-host-ip-address>
Để xem danh sách các khoá lưu vào bộ nhớ đệm, hãy dùng lệnh sau:
:6379> KEYS * 1) "hello::bob"
Như bạn có thể thấy, tên bộ nhớ đệm được dùng làm tiền tố cho khoá và giá trị tham số được dùng làm phần thứ hai.
Để truy xuất giá trị, hãy dùng lệnh GET:
:6379> GET hello::bob Hello bob!
Sử dụng lệnh exit để thoát.
8. Dọn dẹp
Để dọn dẹp, hãy xoá các phiên bản Compute Engine và Memorystore khỏi Cloud Shell.
Xoá phiên bản điện toán:
$ gcloud compute instances delete instance-1 --zone us-central1-c
Xoá phiên bản Memorystore for Redis:
$ gcloud redis instances delete myinstance --region=us-central1
9. Xin chúc mừng!
Bạn đã tạo Memorystore for Redis và một phiên bản Compute Engine. Ngoài ra, bạn đã định cấu hình một ứng dụng Spring Boot để sử dụng Memorystore với tính năng lưu vào bộ nhớ đệm của Spring Boot!
Tìm hiểu thêm
- Lưu vào bộ nhớ đệm Spring Boot
- Memorystore
- Kho lưu trữ Spring trên GitHub của Google Cloud
- Java trên Google Cloud
Giấy phép
Tác phẩm này được cấp phép theo giấy phép Ghi công theo Creative Commons 2.0 Chung.