Một tí call là lý thuyết để bạn bè tham khảo

Cache là gì?

"Caching là một trong kỹ thuật tăng mức độ truy xuất dữ liệu và bớt tải mang đến hệ thống. Cache là vị trí lưu tập hợp những dữ liệu, thường có tính chất nhất thời, cho phép sử dụng lại dữ liệu đã mang hoặc đo lường trước đó, nên sẽ giúp đỡ tăng tốc cho bài toán truy xuất tài liệu ở hầu như lần sau.". Em xin phép được trích nguồn các bác muốn bài viết liên quan thì bơi lội vào đây

Lợi ích của bài toán cache data

Tăng vận tốc xử lý, thế vì yêu cầu gọi API mặt thứ ba hoặc query database nhiều lần. Kế bên ra, giảm số lần hotline API hoặc query database còn sút thiểu băng thông truyền thiết lập giữa những server và giảm thiểu cách xử trí từ CPU tuyệt nhất là với những tài liệu được áp dụng nhiều lần trong ứng dụng.Vẫn hoàn toàn có thể truy vẫn được data khi không có kết nối giữa những server.Đáp ứng được truy nã vấn to trong thời gian ngắn. Trả về dữ liệu gần như là ngay mau lẹ với những dữ liệu có trong bộ lưu trữ cache.

Bạn đang xem: Cách dùng redis với nodejs

Cũng có một trong những hạn chế

Nói túm lại thì cache cũng là 1 trong kỹ thuật dùng bộ lưu trữ để để vận tốc nên dĩ nhiên là tốn thêm 1 vùng nhớ để lưu tài liệu cache (dù cũng rất hiếm mấy).Nếu data cache chỉ cần sử dụng đúng một đợt thì việc cache không số đông không có ích ích gì mà còn hỗ trợ chậm ứng dụng.Nếu ko xóa cache khi không còn sử dụng sẽ tạo ra việc lãng phí bộ nhớ.

Redis là gì?

"Redis là gì? – Redis (REmote DIctionary Server) là một trong mã mối cung cấp mở được dùng để lưu trữ dữ liệu có cấu trúc, có thể sử dụng như một database, bộ lưu trữ cache hay là 1 message broker." Em lại xin phép trích nguồn, các bác muốn tìm hiểu thêm tí triết lý thì tập bơi vào đây. Nói túm lại là không hẳn code NodeJS bắt đầu dùng Redis nhưng mà nó rất có thể lưu tùm lum thứ.

Redis hoạt động như gắng nào

"Khác cùng với RDMS như MySQL, giỏi PostgreSQL, Redis không tồn tại bảng. Redis tàng trữ data bên dưới dạng key-value. Thực tế thì memcache cũng có tác dụng vậy, dẫu vậy kiểu tài liệu của memcache bị hạn chế, không đa dạng được như Redis, vì vậy không hỗ trợ được nhiều thao tác làm việc từ phía fan dùng. Dưới đây là sơ lược về các kiểu tài liệu Redis dùng làm lưu value." tớ lại xin trích của người sử dụng
NTPhuongThao - https://kco.vn/p/nguyen-tac-hoat-dong-cua-redis-server-naQZRq7GKvx

Sử dụng Redis vào thực tế

*
Để tinh giảm việc request nhiều lần mang đến server khách hàng hoặc cách xử trí phức tạp, lúc 1 request được gọi đến vps thì trước tiên hệ thống sẽ đánh giá xem tài liệu có trong hệ thống redis xuất xắc chưa?Nếu tất cả rồi thì lấy dữ liệu trong cache trả về cho tất cả những người dùng.Nếu chưa có thì tiến hành thao tác, trả về cho người dùng đôi khi cũng lưu tài liệu đó vào cache.

Tớ không tồn tại code tại chỗ này nên dịch tạm thời một bài ví dụ về câu hỏi tạo một server tất cả redis và kiểm tra vận tốc response khi bộ nhớ lưu trữ cache bao gồm data với khi bộ nhớ lưu trữ cache không có data.

Tạo new một thư mục:mkdir redis-cache

Cd mang lại thư mục vừa mới được tạo:cd redis-cache

Tạo file package.json file:npm init --force

--force tạo ra file pakage.json với các giá trị mặc định nhưng bạn không xẩy ra hỏi thêm thông tin gì. Sau khi hoàn thành các bạn sẽ có một tệp tin pakage.json vào thư mục hiện nay tại.

Xem thêm: Các Bài Tiểu Luận Môn Lịch Sử Đảng Hay Nhất Hiện Nay, Tiểu Luận Lịch Sử Đảng

Tạo một file server.js sinh sống thư mục hiện tại tại.

Cài đặt Express, Redis, & node-fetch modules:npm install --save node-fetch express redis

Bây giờ Redis sẽ được cài đặt và các bạn có thể coppy đoạn code này vào tệp tin server.js.

const express = require("express")const fetch = require("node-fetch");const redis = require("redis") // create express application instanceconst tiện ích = express() // create and connect redis client to lớn local instance.const client = redis.createClient(6379) // echo redis errors to the consoleclient.on("error", (err) => console.log("Error " + err)); // get photos listapp.get("/photos", (req, res) => // key to store results in Redis store const photosRedisKey = "user:photos"; // Try fetching the result from Redis first in case we have it cached return client.get(photosRedisKey, (err, photos) => // If that key exists in Redis store if (photos) return res.json( source: "cache", data: JSON.parse(photos) ) else // Key does not exist in Redis store // Fetch directly from remote api fetch("https://jsonplaceholder.typicode.com/photos") .then(response => response.json()) .then(photos => // Save the API response in Redis store, data expire time in 3600 seconds, it means one hour client.setex(photosRedisKey, 3600, JSON.stringify(photos)) // Send JSON response to client return res.json( source: "api", data: photos ) ) .catch(error => // log error message console.log(error) // send error khổng lồ the client return res.json(error.toString()) ) );); // start express server at 3000 portapp.listen(3000, () => console.log("Server listening on port: ", 3000));Và bây giờ một server thực hiện redis để cache data sẽ hòa thành, hiện nay chúng ta áp dụng postman nhằm thử coi redis có tác dụng không.

Ở request đầu tiên,

*

Redis không cache data, server bắt buộc gửi reqest mang đến server khác để mang data bắt buộc reponse tốn nhiều thời gian (3325 milliseconds).

Nhưng từ bỏ request thứ hai trở đi,

*

Redis đã bao gồm data cache tự request trước phải reponse về rất nhanh (1048 milliseconds).

Tài liệu tham khảo: https://medium.com/tech-tajawal/introduction-to-caching-redis-node-js-e477eb969eab, https://kco.vn/p/caching-la-gi-va-no-hoat-dong-nhu-the-nao-m68Z0QpXlkG, https://topdev.vn/blog/redis-la-gi, https://kco.vn/p/nguyen-tac-hoat-dong-cua-redis-server-naQZRq7GKvx