Redis là gì? Vì sao nó được các Dev săn đón?
NỘI DUNG BÀI VIẾT
Redis là gì?
Redis là tên viết tắt của Remote Dictionary Server (Máy chủ từ điển từ xa), đây là một kho lưu trữ dữ liệu dưới dạng key-value, trên bộ nhớ, mã nguồn mở, nhanh chóng. Dự án này đã bắt đầu khi Salvatore Sanfilippo, nhà phát triển ban đầu của Redis, muốn cải thiện khả năng mở rộng quy mô công ty khởi nghiệp của ông tại Ý. Từ đó, ông đã phát triển Redis mà hiện được sử dụng với vai trò cơ sở dữ liệu, bộ nhớ đệm, trình trung chuyển tin nhắn và hàng đợi.
Redis là một hệ thống dùng để lưu trữ dữ liệu dưới dạng Key – Value mạnh mẽ. Nếu nói Redis như một bộ nhớ Cache, một Database hoặc Message Broker cũng không sai. Mọi thông tin, dữ liệu đều được redis ghi trên ram thay vì ổ đĩa hay ổ SSD như bình thường. Nhờ việc không cần dùng ổ đĩa hay ổ SSD nên Redis sẽ rút ngắn thời gian tìm kiếm, truy cập dữ liệu. Vì thế mà tốc độ đọc và ghi dữ liệu trên Redis rất nhanh, rất lý tưởng.
Vì sao Redis được các Developer săn đón?
Vai trò của Redis
Ưu điểm thu hút các lập trình viên săn đón Redis là gì? Ứng dụng redis, người dùng sẽ được “tận hưởng” nhiều điểm cộng không thể nào lý tưởng hơn:
- Redis hỗ trợ người dùng có thể thêm mới hoặc loại bỏ dữ liệu trong thời gian ngắn.
- Redis có thể nhận và ghi dữ liệu lên Ram và có thể xuất hiện trên Disk tại một thời điểm.
- Key của Redis là một string nhưng được hỗ trợ sử dụng linh hoạt đa dạng các value như List, Sorted sets, Sets,…
- Dễ dàng di chuyển key từ cơ sở dữ liệu này sang cơ sở dữ liệu khác.
- Redis được trang bị nhiều lệnh đặc biệt. Vì thế mà Redis rất nhanh trong quá trình lấy và ghi dữ liệu.
- Tính năng Master – slave thích hợp cho người dùng muốn gia tăng sự an toàn cho dữ liệu, mở rộng hoặc thu hẹp không gian lưu trữ Data.
- Người dùng có thể tìm kiếm dữ liệu nhanh chóng nhất.
- Redis cho phép người dùng sử dụng linh hoạt nhiều kiểu dữ liệu khác nhau.
- Người dùng có thể để key tự động xóa đi ở một thời gian nhất định nào đó.
Nhiều ưu điểm là thế, nhưng không phải Redis là một hệ thống lưu trữ dữ liệu hoàn hảo.
Vậy nhược điểm của Redis là gì?
- RDB không phải là lựa chọn tốt nếu bạn muốn giảm thiểu tối đa nguy cơ mất mát dữ liệu.
- Thông thường người dùng sẽ set up để tạo RDB snapshot 5 phút 1 lần (hoặc nhiều hơn). Do vậy, trong trường hợp có sự cố, Redis không thể hoạt động, dữ liệu trong những phút cuối sẽ bị mất.
- RDB cần dùng fork() để tạo tiến trình con phục vụ cho thao tác disk I/O. Trong trường hợp dữ liệu quá lớn, quá trình fork() có thể tốn thời gian và server sẽ không thể đáp ứng được request từ client trong vài milisecond hoặc thậm chí là 1 second tùy thuộc vào lượng data và hiệu năng CPU.
Kết luận
Redis là một sự lựa chọn tuyệt vời khi ta cần đến một server lưu trữ dữ liệu đòi hỏi tính mở rộng cao (scaleable) và chia sẻ bởi nhiều tiến trình, nhiều ứng dụng và nhiều server khác nhau.
Leave a Reply