Avatar
1
Lâm Văn Đời Beginner
Cache Spring
Chào tất cả mọi người, hiện tại em có 1 table trong database với dữ liệu rất ít thay đổi (nhưng thỉnh thoáng vẫn có) nên em mới quyết định sử dụng cache khi truy vấn data từ table này.

Em dùng @PostConstruct để findAll dữ liệu rồi lưu vào 1 Array.Rồi sau này muốn truy vấn gì thì truy vấn vào Array đó chứ không truy vấn trực tiếp vào database nữa.

Nhưng em đang có  vấn đề là :

Khi dữ liệu thay đổi thì sẽ xử lý như thế nào là hợp lý nhất ạ ?

=> Cách xử lý của em là: mỗi khi (thêm/xóa/sửa) dữ liệu thì em sẽ update lại cái Array ban đầu.

Nhưng theo em đoán thì  cách xử lý ở trên chỉ work tốt  khi deploy với 1 instance thôi còn khi deploy với 2 instance trở lên thì khi update sẽ không reload được Array của tất cả các instance.

  • Theo mọi người thì trường hợp suy đoán của em có đúng ko ạ? Tại em chưa deploy bao giờ nên em cũng không biết rõ ạ,em  chỉ có tìm hiểu lý thuyết thôi ạ.
  • Và mọi người cho em hỏi là cách cache tốt nhất cho trường hợp trên là  gì ạ ? Lưu tất cả các record của Table đó vào 1 cache server (Redis) thày vì object có ổn k ạ?
  • Answer
spring
Remain: 5
1 Answer
Avatar
monkey Beginner
monkey Beginner
The Best Answer
  1. Khi dữ liệu thay đổi thì như em làm là hợp lý rồi, lưu dữ liệu vào cả cache lẫn DB
  2. Em suy đoán đúng rồi, nếu deploy lên 2 server thì sẽ không có sự đồng bộ dữ liệu trên cache của 2 server dẫn đến những lỗi rất nguy hiểm
  3. Em nên sử dụng 1 cache provider nào đó, ví dụ là Redis, em cũng có thể lưu toàn bộ các record vào redis, hoặc có thể chỉ lưu những thông tin cần thiết mà em có sử dụng cache, cái này sẽ tuỳ thuộc vào từng nghiệp vụ cụ thể mà quyết định em ạ.
  • 0
  • Reply
Cảm ơn anh đã trả lời em ạ!

Khi mình tham gia dự án á a, cụ thể là dự án Micro service.Theo kinh nghiệm của a thì muốn biết service mình làm có deploy lên nhiều server hay không thì mình phải chủ động hỏi bộ phận devops đúng ko ạ?

Hay là chắc chắn 100% service mình làm sẽ được deploy trên nhiều server ạ.

Nếu mình biết server mình deploy trên 1 server thôi thì mình có thể làm theo cách em nói ở trên (dùng @PostContruct) được không ạ?

 –  Lâm Văn Đời 1659950275000
Thường thì dev sẽ là người quyết định sẽ có bao nhiêu server, vì đội DevOps sẽ làm theo yêu cầu của Dev, tuy nhiên mình sẽ nên phải thảo luận với đội DevOps để họ tư vấn thêm về các vấn đề hạ tầng khi chỉ có 1 server em ạ, anh thường sẽ làm thế, vì đội DevOps họ còn đảm bảo HA (High Availability) nữa.

Đúng vậy em ạ, nếu em chỉ có 1 server, mọi chuyện sẽ dễ dàng hơn và em có thể làm như em nói.

 –  monkey 1659980790000
Tks a!  –  Lâm Văn Đời 1660032315000