Redis
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> Redis

Redis được sử dụng như thế nào trong Trello?

Chúng tôi sử dụng Redis trên Trello cho dữ liệu tạm thời mà chúng tôi sẽ không sao nếu mất. Chúng tôi không lưu trữ dữ liệu trong Redis vào đĩa và chúng tôi sử dụng allkeys-lru, vì vậy chúng tôi chỉ lưu trữ những thứ có thể bị loại bỏ bất cứ lúc nào mà chỉ gây bất tiện rất nhỏ cho người dùng (ví dụ:ngay lập tức thấy trạng thái người dùng không chính xác). Điều đó đang được nói, chúng tôi cung cấp cho nó hơn 5 lần không gian cần thiết để lưu trữ bộ hoạt động thực tế của nó và chọn từ 10 khóa cho thời hạn sử dụng, vì vậy chúng tôi thực sự không bao giờ thấy bất kỳ thứ gì bị loại bỏ mà chúng tôi đang sử dụng.

  1. Đó là máy chủ pubsub của chúng tôi. Khi người dùng thực hiện điều gì đó với bảng hoặc thẻ, chúng tôi muốn gửi thông báo bằng delta đó đến tất cả các máy khách được kết nối websocket đã đăng ký với đối tượng đã thay đổi, vì vậy tất cả các quy trình Node của chúng tôi đều được đăng ký kênh pubsub truyền những thông điệp đó và chúng truyền bá thông điệp đó đến các cổng web được cấp phép và đăng ký thích hợp.

  2. Chúng tôi RẤT SỬ DỤNG nó để back socket.io, nhưng vì chúng tôi chỉ sử dụng websockets và vì socket.io quá khó mở rộng như chúng tôi cần vào lúc này, chúng tôi có một bản vá vô hiệu hóa tất cả ngoại trừ một kênh là cần thiết đối với chúng tôi.

  3. Đối với người dùng của chúng tôi không có websockets, chúng tôi phải giữ một danh sách các hành động đã xảy ra trên mỗi kênh đối tượng kể từ lần yêu cầu thăm dò cuối cùng của người dùng. Để làm được điều đó, chúng tôi sử dụng một danh sách mà chúng tôi giới hạn ở 100 phần tử gần đây nhất và một bộ đếm phụ trợ về số lượng phần tử đã được thêm vào danh sách kể từ khi nó được tạo. Vì vậy, khi chúng tôi đang trả lời một yêu cầu thăm dò từ một trình duyệt như vậy, chúng tôi có thể kiểm tra phần tử cuối cùng mà nó báo cáo rằng nó đã nhìn thấy và chỉ gửi xuống bất kỳ thông báo nào đã được thêm vào hàng đợi kể từ đó. Vì vậy, điều đó nhận được một yêu cầu thăm dò ý kiến ​​xuống chỉ để kiểm tra quyền và một lần kiểm tra khóa Redis duy nhất trong hầu hết các trường hợp, điều này rất nhanh.

  4. Chúng tôi lưu trữ một số dữ liệu tạm thời về trạng thái hoạt động của những người dùng được kết nối trong Redis, vì dữ liệu đó thay đổi thường xuyên và không cần thiết phải lưu dữ liệu đó vào đĩa.

  5. Chúng tôi lưu trữ các khóa tồn tại trong thời gian ngắn để hỗ trợ đăng nhập OAuth trong Redis.

Chúng tôi yêu Redis; một khi bạn có một phiên bản của nó và đang chạy, bạn muốn sử dụng nó cho mọi thứ. Rắc rối thực sự duy nhất mà chúng tôi gặp phải với nó là các khách hàng tiêu thụ chậm tiêu thụ hết dung lượng có sẵn.

Chúng tôi sử dụng MongoDB cho các nhu cầu cơ sở dữ liệu truyền thống hơn của chúng tôi.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. .NET Core đưa dịch vụ singleton vào một dịch vụ singleton khác

  2. Sử dụng Redis SCAN trong NODE

  3. Lỗi:Không thể kết nối với Redis tại redis:6379:Không xác định được tên hoặc dịch vụ

  4. Lắng nghe các thay đổi trong danh sách redis

  5. Cách đặt Ngày hết hạn cho nhiều khóa trong Redis