Bài viết này cung cấp một ứng dụng mẫu sử dụng Redis Cache kèm theo lời giải thích.
Vui lòng xem bài viết này về cách tạo một ứng dụng Express Node JS để chúng ta có thể nhanh chóng chuyển sang chủ đề mà không bị chậm trễ thêm.
Tại sao cần phải lưu vào bộ nhớ đệm?
Khi cùng một phản hồi cần được cung cấp nhiều lần, hãy lưu trữ dữ liệu trong bộ nhớ máy chủ phân tán và dữ liệu có thể được truy xuất nhanh hơn dữ liệu được truy xuất từ lớp lưu trữ cho mỗi cuộc gọi. Bộ nhớ đệm là khả năng của ứng dụng để sao chép các giá trị trong một khoảng thời gian nhất định và phục vụ yêu cầu web ngay lập tức.
Những kỹ thuật này sẽ có hiệu quả khi
- Cần phải gọi API của bên thứ 3 và số lượng cuộc gọi
- Chi phí truyền dữ liệu giữa đám mây và máy chủ.
- Phản hồi của máy chủ là rất quan trọng dựa trên các yêu cầu đồng thời.
Redis Cache là gì?
Bộ đệm dữ liệu được lưu trữ trong một hệ thống phân tán tập trung như Redis. Redis còn được gọi là máy chủ cấu trúc dữ liệu, nghĩa là nhiều quy trình có thể truy vấn và sửa đổi dữ liệu cùng lúc mà không mất nhiều thời gian tải.
Ưu điểm của Redis
Các thuộc tính đặc biệt của cấu trúc dữ liệu là
- Mặc dù dữ liệu thường được yêu cầu, cung cấp và sửa đổi nhưng dữ liệu sẽ được lưu trữ trên đĩa thay vì lưu trữ trong RAM.
- Không giống như ngôn ngữ lập trình cấp cao, việc triển khai sẽ nêu bật mức sử dụng tối ưu bộ nhớ.
- Cũng cung cấp các tính năng như sao chép, mức độ bền, phân cụm và tính sẵn sàng cao (HA).
- Redis có thể xử lý các hoạt động Memcached phức tạp như Danh sách, Bộ, tập dữ liệu được sắp xếp, v.v.,
Sử dụng Redis Client trên hệ thống cục bộ
Để sử dụng Redis, bạn cần cài đặt Node JS Redis Client trong hệ thống cục bộ. Bạn có thể tải xuống tệp msi (phiên bản ổn định v3.0.504 tính đến ngày xuất bản bài viết này) từ Github và tiến hành quá trình cài đặt bình thường (dành cho hệ điều hành Windows).
Redis Client mới nhất cũng có thể được cài đặt với Windows Subsystem for Linux (WSL) và cài đặt các phiên bản Redis 6.x. Ngoài ra, để cập nhật, hệ điều hành Mac và Linux hãy làm theo hướng dẫn tải xuống
Chạy Redis Client bằng lệnh sau
redis-server

Tạo ứng dụng Express Node JS
Mở cửa sổ nhắc PowerShell hoặc cmd và đi tới thư mục đích.
Thực hiện lệnh sau
npx express expressRedisCaching –hbs

Cài đặt các mô-đun bằng lệnh
npm i và cài đặt các gói bổ sung sau
npm i redis
npm i isomorphic-fetch Khi tất cả các gói đã được cài đặt và sẵn sàng để bắt đầu. Tôi đã tạo một trang lộ trình mới có tên là “getCached.js ” và được ánh xạ trong “App.js trang ”.
app.use('/getCached', require('./routes/getCached')); Khi gọi điểm cuối, logic là tìm nạp phản hồi từ trang web giữ chỗ JSON (API giả), lưu trữ dữ liệu trong Redis Cache và phản hồi yêu cầu. Theo yêu cầu tiếp theo, dữ liệu được lưu trong bộ nhớ đệm sẽ được cung cấp.
const express = require('express')
require('isomorphic-fetch')
const redis = require('redis')
const router = express.Router()
const client = redis.createClient({
host:'127.0.0.1',
port:6379
})
let sourceURL = 'https://jsonplaceholder.typicode.com/todos';
router.get('/',async(req, res)=>{
await client.connect();
const value = await client.get('todos');
if(value){
console.log("from cached data")
res.send(JSON.parse(value))
}
else{
const resp = await fetch(sourceURL)
.then((response) => response.json());
await client.set('todos', JSON.stringify(resp));
console.log("from source data")
res.send(resp);
}
await client.disconnect();
})
module.exports = router Đối tượng được tạo bằng redis là
redis.createClient({ host:’127.0.0.1’, port:6379}); Với các tùy chọn
máy chủ :hiện tại Redis có sẵn trong hệ thống cục bộ và do đó máy chủ được mặc định là 127.0.0.1
cổng :theo mặc định, hệ điều hành Windows đang phân bổ cổng 6379 cho Redis, nhưng bạn có thể tùy chỉnh cổng tương tự.
Bây giờ là lúc chạy ứng dụng bằng cách thực thi lệnh
npm start


Trong lần truy cập đầu tiên, dữ liệu được tìm nạp từ API nguồn với thời gian phản hồi khoảng 1156 mili giây và dữ liệu tương tự đã được lưu trữ trong kho dữ liệu trong bộ nhớ Redis Cache. Lần truy cập thứ hai lấy dữ liệu từ bộ nhớ đệm với thời gian tìm nạp giảm đáng kể chỉ ~10 mili giây hoặc thậm chí ~6 mili giây.
Như vậy, mục tiêu đã đạt được chỉ với rất ít bước đơn giản.