Nội dung bài viết
Video học lập trình mỗi ngày
Cách connect redis này là một cách tạo độ tin cậy và giám sát hệ thống một cách hiệu quả trong kiến trúc microservice, đến nay chúng tôi vẫn sử dụng cách này triển khai cho nhiều dự án.
Chính vì vậy hôm nay tôi sẽ nói về cách tạo một service connect redis chuẩn mực và có lẽ đây là một cách tiếp cận phù hợp cho các hệ thống hiện nay.
Tôi nghĩ nếu bạn có quyết tâm trở thành một lập trình viên ở backend thì bạn hãy cảm ơn sự nỗ lực của các anh chị mà thôi, không ai có thể thay thế nỗ lực của chính bạn. Và tôi chỉ là người đồng hành cùng bạn trong suốt hành trình này.
Connect redis cho dự án nhỏ
Hiện nay thì cách connect này rất nhanh và phổ biến. Ưu điểm của nó là nhanh để làm việc trong môi trường development mà thôi. Ví dụ như sau, và đây là dành cho các level 0, 1. Đương nhiên điều bắt buộc tiên quyết của bạn chính là phải zinstall redis
, nếu như bạn thật sự chưa biết cách init và install redis tôi khuyên bạn hãy xem những bài viết trước của tôi về điều đó.
Và đây là cách đơn giản nhất:
'use strict';
const redis = require('redis')
// create a new client redis
const client = redis.createClient({
host,
port,
password,
username:
})
client.on('error', err => {
console.error(`Redis error: ${err}`);
})
// export
module.exports = client
Ở đây có nhiều nhược điểm của cách connect này. Đầu tiên đó là chưa có một func handlerEventError bao gồm 4 status của redis như
const statusConnectRedis = {
CONNECT: 'connect',
END: 'end',
RECONNECT: 'reconnecting',
ERROR: 'error'
}
Và điều thứ hai đó chính là khi đột ngột ngắt connect thì việc retry connect diễn ra như thế nào? Chính vì lẽ đó thì chúng ta sẽ đi vào cách connect thứ hai của một lập trình viên nhiều kinh nghiệm.
Tôi muốn các bạn xem nhiều cách tiếp cận về redis, hy vọng sẽ giúp bạn hiểu rõ bản chất của redis.
👉 Series Redis
01 - REDIS và 3 sự cố phổ biến khi sử dụng nodejs | Cache avalanche | Cache breakdown | Cache penetration
02 - Redis là gì? Bài học này đủ để bắt đầu | Là một Backend bạn đã từng gặp những trường hợp này chưa?
03 - Redis - Nguồn cảm hứng bất tận
04 - Redis - Hôm nay tôi đi phỏng vấn về Redis có 5 câu hỏi dành cho tôi và bạn | Node.js backend
05 - String Redis: Cấu trúc, lệnh phổ biến và kịch bản nào sử dụng?
06 - Hash Redis: Cấu trúc, lệnh phổ biến và kịch bản ứng dụng
07 - List Redis: Cấu trúc, lệnh phổ biến và kịch bản ứng dụng
08 - Redis Sets: Cấu trúc, lệnh phổ biến và kịch bản ứng dụng
09 - Redis Zset: Cấu trúc, lệnh phổ biến và kịch bản ứng dụng
10 - Redis Transaction: Cấu trúc, lệnh phổ biến và kịch bản ứng dụng
11 - Redis Pub/Sub: Cấu trúc, lệnh phổ biến và kịch bản ứng dụng
12 - Connect Nodejs Redis async await với 3 level khác nhau và cách nào hiệu quả hơn
13 - Redis vs MySQL Để check QPS (query per second) tôi phải đến năm thứ 4 lập trình mới biết về sysbench
14 - Thực hành Redis và Nodejs | Sử dụng redis cloud FREE kết hợp Redisinsight
15 - Redis đâu phải chỉ làm cache? Hãy xem đàn em mô phỏng shopping carts của amazon sử dụng redis
16 - Design 4 models mongodb quan trọng orders, carts, products, inventories trong System eCommerce P - 5
Connect redis chính xác nhất.
Đầu tiên tôi xác định cần phải 3 function dưới đây. Nhưng, nếu các anh chị nếu có thời gian hay xem đoạn code đây đủ ở đây Connect redis hoàn chỉnh cho lập trình viên cao cấp. Còn dưới đây là cơ bản triển khai code
const initRedis = () => {
}
const getConnectRedis = () => {
}
const closeConnectRedis = () => {
}
module.export = {
initRedis,
getConnectRedis,
closeConnectRedis
}
Đầu tiên, tôi phải suy nghĩ có thể là hôm nay chỉ là một connect, nhưng khi system được mở rộng ra thì sẽ có nhiều connect nữa? Như vậy chắc chắn là phải tạo một object với instance connect.
const initRedis = () => {
const instanceRedis = redis.createClient()
client.instanceConnect = instanceRedis
handleEventConnection({
connectionRedis: instanceRedis
})
}
Các bạn thấy đấy. func initRedis
tôi đã sửa lại như sau. Tôi thêm handleEventConnection
đó chính là một func
để handle nhứng event của redis khi connect. client.instanceConnect
hiện tại chỉ có một, nhưng nhiều thì sao? Đến đây tôi nghĩ các bạn hãy cho tôi code bằng một video này.