Asked Aug 21st, 2024 1:45 a.m. 226 0 5
  • 226 0 5
0

Lưu Cart đâu cho hợp lí

Share
  • 226 0 5

Em đang có làm 1 dự án website bán hoa sử dụng java spring boot. Em đang làm chức năng shopping cart thì hồi trước em lưu cart vào database nhưng thầy em nói làm thế thì chỉ dành cho dự án nhỏ thôi và nếu 100 người truy cập cùng lúc là tiêu. Thì không biết các anh chị ở ngoài thường dự án công ty thực tế hay cá nhân mọi người sẽ lưu cart vào đâu và xử lí cho hợp lí nhất ạ ?

5 ANSWERS


Answered Sep 21st, 2024 4:19 a.m.
Accepted
0

Chào bạn!

Hehe, lưu cart vào database cho dự án nhỏ thì ổn rồi, nhưng nếu 100 anh chị em cùng lúc vào mua hoa thì database bạn sẽ khóc thét đấy!

Thay vì lưu cart vào database, bạn nên xem xét sử dụng Redis hoặc Memcached. Hai ông này chuyên về việc lưu trữ dữ liệu tạm thời, xử lý truy cập đồng thời rất tốt và tốc độ thì "bá đạo" luôn.

Redis có nhiều tính năng hay ho như list, set, hash, rất phù hợp để lưu thông tin cart của khách hàng.

Memcached cũng là một lựa chọn khá ổn, tốc độ nhanh nhưng có hạn chế hơn Redis về tính năng.

Bạn có thể dùng Spring Data Redis để làm việc với Redis một cách dễ dàng trong Spring Boot.

Gợi ý:

  • Sử dụng Redis để lưu thông tin cart của người dùng dưới dạng hash hoặc json.
  • Sử dụng session ID để phân biệt cart của từng người dùng.
  • Thiết kế cấu trúc dữ liệu cart (sản phẩm, số lượng, giá...) cho phù hợp

Mong là bạn sẽ không làm database phải khóc nữa nhé!

Share
Answered Aug 21st, 2024 2:50 a.m.
+3

😉 Nên sử dụng Redis để lưu, vì ưu điểm nó truy xuất nhanh và có thể mở rộng dễ dàng 👍️. Tuy nhiên cần quản lý khi nào thì dữ hết hạn để backup dữ liệu xuống Database và làm mới lại vùng nhớ trên Redis.

🚀 Happy coding !!!

Share
Answered Aug 23rd, 2024 4:17 a.m.
+2

Tùy theo mục đích của dự án mà mình có thể lựa chọn lưu vào database hay trên Redis.

Chọn database kết hợp với redis:

  • Nếu muốn keep dữ liệu lâu dài thì sẽ chọn cách lưu luôn vào Database, phục vụ cho việc phân tích, truy xuất dễ dàng sau này chẳng hạn, mình có làm qua một số dự án về ecommerce thì thường vẫn chọn cách lưu vào database kết hợp với redis cache để giảm tải cho server. Ngoài ra các giỏ hàng của user sau bao nhiêu ngày đó không có action gì thì có thể xóa định kỳ đi để giảm records trong DB.
  • Nếu 100 người truy cập cùng lúc là tiêu -> ý này mình thấy chưa đúng, cho dù 100 hay 1000 người thì vấn đề là truy xuất vào DB nhiều, gây tải cao cho DB thôi chứ cart là của mỗi user nên việc select, insert, delete, update cart sẽ không tốn bao nhiêu thời gian cả với lại hệ thống lớn thì thường sẽ có chiến lược scaling hợp lý nên không phải lo vấn đề select, insert, delete, update cart mà tèo DB.
Share
Answered Aug 21st, 2024 2:26 a.m.
0

kết hợp redis + database sẽ ổn hơn

Share
Answered Sep 17th, 2024 8:27 a.m.
0

cách cổ điền thì lưu vào cookie thôi.

phức tạp hơn thì lưu vào local storage

phức tạp hơn nữa thì lưu vào sql db. Việc xử lý lượng truy cập lớn là việc riêng. Lưu luôn vào memory chứ cũng ko cần redis cho to chuyện.

Share
Viblo
Let's register a Viblo Account to get more interesting posts.