[Laravel] Mọi người cho em hỏi về Redis trong laravell
Chào mọi người ạ! Hôm nay em bắt đầu tìm hiểu về Redis trong Laravel, em thấy nó ứng dụng vào việc lưu cache để giúp tiết kiệm thời gian load database. Mọi người cho em hỏi nếu vậy tại sao em thấy trong Laravel có sẵn Cache rồi, vậy tại sao lại không dùng Cache mà lại dùng Redis ạ? Và Cache với Redis có khác biệt gì không ạ? Em cũng mới tìm hiểu có gì hỏi sai mong mọi người thông cảm. Cám ơn đã đọc ạ?
3 CÂU TRẢ LỜI
A thấy rất nhiều component trong Laravel ở dạng driver-based ví dụ như Authentication, Queue, Database, Session, Notifications, Cache,...
Trong trường hợp của em Redis chỉ là một dạng driver của cache component.
Performance thì còn tùy ứng dụng, e có thể dùng Redis, memcached,.. Hoặc nếu driver e cần dùng không được support bởi Framework thì em có thể extend framework và tạo custom cache driver.
Dạ tại công ty em đang tìm hiểu về mô hình microservice nên em tìm hiểu redis giúp load data nhanh á anh. Em dùng laravel. Em tính dùng logic là: Khi nào mình truy vấn thì mình sẽ kiểm tra coi Redis có tồn tại không? nếu có thì load Redis ra, còn không thì truy vấn bình thường đúng không anh?
Đúng rồi em, đó là flow cơ bản. Ngoài ra em còn phải quan tâm đến:
- Thời gian expire của cache
- Tạo cache key co phù hợp
- Dữ liệu lưu vào cần tối giản như thế nào
- ...
Còn microservice thì thông thường redis sẽ chạy ở 1 container / pod (nếu e dùng Kubernetes) riêng, và mình phải tính toán đến việc scaling và availability cho nó nữa.
Cache mặc định của laravel ở trên ổ đĩa cứng, còn cache bằng Redis ở trên RAM, cache sử dụng Redis sẽ nhanh hơn.
Anh ơi vậy khi nào mình truy vấn thì mình sẽ kiểm tra coi Redis có tồn tại không? nếu có thì load Redis ra, còn không thì truy vấn bình thường đúng không anh?
cơ bản thì nếu bạn cài Redis vào máy xong, đổi lại thông số trong file .env, sau đó bạn dùng hàm cache()
trong laravel để gọi ra hoặc lưu vào, không khác gì cache trên đĩa hay cache trên DB