Avatar
1
ptitdev Beginner
ptitdev Beginner
Có cần thiết lưu trữ cache dữ liệu trong mongodb ?
Em chào anh , em có 1 câu hỏi là ví dụ e cần vào mongo để lấy 1 dữ  liệu , cụ thể e đang lưu trong mongo các session chat , mỗi lần chat e cần lấy session chat đấy ra để kiểm tra thông tin và lưu chat message theo session chat , thì việc mỗi lần chat đều phải chọc vào mongo , dẫn đến cần vào mongo khá nhiều , vậy e còn cần cache lên redis dữ liệu của session chat đấy ko ạ , e thấy mongo query cũng khá nhanh rồi ? Mong được anh trả lời?
  • Answer
redis cache mongo
Remain: 5
1 Answer
Avatar
tvd12 Beginner
tvd12 Beginner
Session chat em chỉ nên lưu ở memory server socket thôi em ạ, còn message thì em nên lưu ở mongodb.

Anh đang tưởng tượng là em có nhiều socket server nhỉ? Vậy thì ở mỗi server em sẽ có session chat riêng. Em có thể sử dụng kafka để broadcast message từ 1 nguồn đến nhiều socket server, client kết nối ở server nào thì sẽ nhận được message ở server đó em nhé.

Em có thể tham khảo ví dụ này nhé: https://youngmonkeys.org/use-ezykafka-for-push-message-system/

  • 0
  • Reply
em cảm ơn anh nhưng cái phần session chat này e có nghiệp vụ cần sử dụng kể cả khi đã đóng nên e muốn hỏi việc có cần cache lên redis dữ liệu của mongo không a ạ , em hơi thắc mắc là mongo cũng query khá nhanh vì nó là nosql rồi nhưng cache trên redis thì rất nhanh , nên e kb có cần cache lên redis ko ấy a  –  ptitdev 1656056458000
  1. Vì socket là giữ kết nối nên em sẽ chỉ cần sử dụng 1 cái session token để login thôi, em không cần mỗi lần request thì lại lôi cái session token này ra kiểm tra em ạ, em có thể tham khảo nhé: https://youngmonkeys.org/ezyfox-server-login/
  2. Tuy nhiên nếu em vẫn có ý định kiểm tra cái session này mỗi lần request thì sử dụng redis sẽ hợp lý hơn vì redis là memory và nó sử dụng hash table nên tốc độ sẽ được cải thiệt đáng kể đó em ạ.
 –  tvd12 1656057763000