Khi nào nên sử dụng kho lưu trữ khóa / giá trị như Redis thay thế / dọc theo cơ sở dữ liệu SQL?


166

Tôi đã đọc những điều tuyệt vời về các cửa hàng khóa / giá trị như Redis nhưng dường như tôi không thể tìm ra khi nào nên sử dụng nó trong một ứng dụng.

Nói rằng tôi đang kiến ​​trúc một ứng dụng dựa trên web; Tôi biết ngăn xếp nào tôi sẽ sử dụng cho front-end, back-end, cơ sở dữ liệu, v.v ... đó là một số tình huống mà tôi sẽ đi "oh chúng ta cũng cần Redis cho X, Y hoặc Z."

Tôi sẽ đánh giá cao các ví dụ của node.js cũng như các ví dụ không phải là node.js.


Câu trả lời:


102

Tôi dường như không thể tìm ra khi nào nên sử dụng nó trong một ứng dụng.

Tôi sẽ khuyên bạn nên đọc này hướng dẫn mà cũng chứa trường hợp sử dụng. Vì redis được định hướng theo bộ nhớ nên nó thực sự tốt cho dữ liệu thời gian thực được cập nhật thường xuyên, chẳng hạn như lưu trữ phiên, cơ sở dữ liệu trạng thái, thống kê, bộ nhớ đệm và cấu trúc dữ liệu nâng cao của nó cung cấp tính linh hoạt cho nhiều tình huống khác.

Tuy nhiên, Redis không thay thế NoQuery cho các cơ sở dữ liệu quan hệ cổ điển vì nó không hỗ trợ nhiều tính năng tiêu chuẩn của thế giới RDBMS như truy vấn dữ liệu của bạn có thể làm chậm dữ liệu. Thay thế là các cơ sở dữ liệu tài liệu như MongoDB hoặc CouchDB và redis rất tốt trong việc bổ sung chức năng cụ thể trong đó tốc độ và hỗ trợ cho các cấu trúc dữ liệu nâng cao có ích.


3
Hướng dẫn bạn liên kết đến là tuyệt vời!
Chris Abrams

5
Tôi đã thực hiện một tìm kiếm nhanh trên Google với URL trang web hướng dẫn đó và tình cờ thấy đây là một hit hàng đầu - sl slideshoware.net/dvirsky/int sinhtion
Paul

66

Tôi nghĩ không có gì giải thích các trường hợp sử dụng cho Redis tốt hơn bài viết này: http://antirez.com/post/take-abilitiesage-of-redis-adding-it-to-your-stack.html

Tôi cá là bạn sẽ có aha! Khoảnh khắc . ;)

Một trích dẫn từ một người đọc trước:

Tôi đã đọc về Redis trước đây và nghe cách các công ty đang sử dụng nó, nhưng chưa bao giờ hoàn toàn hiểu mục đích của nó. Sau khi đọc nó, tôi thực sự có thể nói rằng tôi hiểu Redis bây giờ và nó hữu ích như thế nào. Thật ngạc nhiên khi sau khi nghe rất nhiều về nó, tất cả chỉ là một bài viết tương đối đơn giản.

Một trích dẫn từ bài báo:

Redis khác với các giải pháp cơ sở dữ liệu khác theo nhiều cách: nó sử dụng bộ nhớ làm hỗ trợ lưu trữ chính và đĩa chỉ để duy trì, mô hình dữ liệu khá độc đáo, nó là luồng đơn và vv. Tôi nghĩ rằng một sự khác biệt lớn nữa là để tận dụng Redis trong môi trường sản xuất của bạn, bạn không cần phải chuyển sang Redis. Bạn chỉ có thể sử dụng nó để làm những việc mới mà trước đây không thể thực hiện được hoặc để khắc phục các sự cố cũ.

Các trường hợp sử dụng bài viết chạm vào:

  • Làm chậm danh sách các mục mới nhất trong trang chủ của bạn
  • Bảng xếp hạng và các vấn đề liên quan
  • Sắp xếp theo phiếu bầu của người dùng và thời gian
  • Thực hiện hết hạn trên các mặt hàng
  • Đếm
  • N mục duy nhất trong một khoảng thời gian nhất định
  • Phân tích thời gian thực về những gì đang xảy ra, cho các số liệu thống kê, chống thư rác hoặc bất cứ điều gì
  • Quán rượu / phụ
  • Hàng đợi
  • Bộ nhớ đệm

Bài viết này rất hữu ích, tôi có những gì tôi muốn biết
Hos Mercury

@ Zenw0lf Redis vẫn là tốt nhất cho bộ nhớ đệm đơn giản? Bài viết của bạn là từ năm 2011, vì vậy không chắc chắn tôi có nên sử dụng cái gì khác không.
Moondra

@Moondra Vâng, dự án vẫn còn rất nhiều và người tạo ra nó phát hành thường xuyên. Nó vẫn là một dự án tuyệt vời cho các kịch bản sử dụng khác nhau!
zenw0lf

@ zenw0lf Bài viết hay nhưng tôi vẫn hơi bối rối trong một số trường hợp sử dụng. Ví dụ: trường hợp sử dụng "mục mới nhất", tại sao nên thêm Redis trong trường hợp này? những gì có trong cơ sở dữ liệu, chúng tôi thêm vào một bảng cụ thể chỉ để có id người dùng, nhận xét (id) và / hoặc dấu thời gian và sử dụng trực tiếp điều này. Điều này có giống nhau không?
Tony Lin

1
@TonyLin Cả hai đều nhanh, vì nó trong bộ nhớ và vì Redis cũng đã triển khai khá tốt các mô hình dữ liệu tiên tiến để giúp nó hoạt động tốt nhất có thể.
zenw0lf

9
  • Tôi rất thích sử dụng redis trên các dự án thời gian thực. Gần đây tôi đã làm cho một hệ thống theo dõi gps được xây dựng trên cơ sở dữ liệu mysql trước đây.

    LỢI THẾ

    1. Mỗi lần trình theo dõi phát dữ liệu tôi không cần mở kết nối mysql và lưu trữ trên đó. Chúng ta có thể lưu nó trên redis và sau đó di chuyển sang mysql bằng một số quy trình khác. Điều này sẽ tránh kết nối đồng thời từ trình theo dõi đột biến đến mysql.
    2. Tôi có thể xuất bản tất cả các dữ liệu gps đó và các máy khách khác (javascript / android) có thể đăng ký trong thời gian thực bằng cách sử dụng hàng đợi tin nhắn dựa trên redis
    3. Tôi có thể kích hoạt cảnh báo thời gian thực

3

Một điều nữa là Redis không phải là một cơ sở dữ liệu quan hệ. Nếu bạn đang cần SQL "THAM GIA" thì bạn sẽ không muốn sử dụng Redis, cũng như bất kỳ cơ sở dữ liệu không liên quan nào khác. Redis là nhanh hơn so với hầu hết các cơ sở dữ liệu quan hệ. Nếu bạn chỉ thực hiện khóa: truy vấn cặp giá trị, thì bạn sẽ muốn sử dụng Redis.


Vì vậy, ví dụ, sẽ tốt hơn nếu sử dụng redis cho thông tin liên quan đến phiên người dùng để truy cập tên, email, ID, v.v. nhanh hơn?
Chris Abrams

Tôi sẽ nghĩ như vậy. Nội các Kyoto sẽ còn nhanh hơn cho điều đó, tôi nghĩ.
EhevuTov
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.