Có cần Redis không? Khi PostgreSQL cung cấp hàng đợi, khóa và cả chức năng pub/sub (2021)
(spin.atomicobject.com)-
Trường hợp sử dụng 1: Xếp hàng công việc
- Redis thường được dùng để điều phối các tác vụ nền trong dịch vụ web.
- Từ PostgreSQL phiên bản 9.5, có thể triển khai xếp hàng công việc bằng tùy chọn
SKIP LOCKED. - Tùy chọn này cho phép chọn công việc mà không phải chờ khóa, giúp đảm bảo nhiều worker không xử lý cùng một công việc cùng lúc.
-
Trường hợp sử dụng 2: Khóa ứng dụng
- Redis thường được dùng cho khóa phân tán.
- Có thể triển khai cùng chức năng đó bằng advisory lock của PostgreSQL.
- Advisory lock cho phép tận dụng bộ máy khóa nội bộ của PostgreSQL cho các mục đích do ứng dụng định nghĩa.
-
Trường hợp sử dụng 3: Pub/Sub
- Redis được dùng để đẩy sự kiện tới các client đang hoạt động.
- Từ PostgreSQL phiên bản 9, có thể cung cấp chức năng Pub/Sub bằng các câu lệnh
LISTENvàNOTIFY. - Client PostgreSQL có thể đăng ký một kênh thông điệp cụ thể, và khi client khác gửi thông điệp vào kênh đó, mọi bên đăng ký đều sẽ nhận được thông báo.
-
Khai thác PostgreSQL một cách trọn vẹn
- Redis được dùng cho các mục đích khác với PostgreSQL và rất mạnh ở việc cache dữ liệu có TTL cũng như lưu trữ dữ liệu tạm thời.
- PostgreSQL cung cấp nhiều hơn một cơ sở dữ liệu SQL, và có khả năng thay thế bằng PostgreSQL cho một số tác vụ vốn đang dùng Redis.
- Đây có thể là một lựa chọn đáng cân nhắc để giảm độ phức tạp khi vận hành nhiều dịch vụ dữ liệu và cắt giảm chi phí vận hành.
1 bình luận
Ý kiến Hacker News
Redis cung cấp tốc độ phản hồi rất nhanh khi chạy trên cùng máy với ứng dụng. Điều này cho phép làm những việc khác với Postgres
PostgreSQL cung cấp nhiều hơn một cơ sở dữ liệu SQL đơn thuần
PGQueuer là một lựa chọn thay thế tối giản dùng PostgreSQL để cung cấp hàng đợi công việc, khóa và thông báo thời gian thực
Postgres là một cơ sở dữ liệu mạnh mẽ
Phần lớn dự án chỉ cần một hàng đợi công việc đơn giản, và điều quan trọng là đơn giản hóa stack phức tạp
Postgres có một số hạn chế
Nên bắt đầu với PostgreSQL và chuyển sang Redis khi cần
Nhược điểm lớn của pub/sub trong Postgres là kích thước thông điệp bị giới hạn ở 8000 byte
Caching, một trong những ứng dụng quan trọng nhất của Redis, phức tạp hơn trong Postgres
Khi dùng các chức năng này trong Postgres, việc cập nhật và sao chép cũng trở nên khó hơn