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

Đây có phải là một trường hợp sử dụng tốt cho Redis trên API ServiceStack REST không?

Điều gì cần suy nghĩ khi chỉ định một ứng dụng NoSQL Redis

1) Để phát triển chính xác trong Redis, bạn nên suy nghĩ nhiều hơn về cách bạn sẽ cấu trúc các mối quan hệ trong chương trình C # của mình, tức là với các lớp bộ sưu tập C # thay vì Mô hình quan hệ dành cho RDBMS. Tư duy tốt hơn sẽ là suy nghĩ nhiều hơn về lưu trữ dữ liệu như cơ sở dữ liệu Tài liệu hơn là các bảng RDBMS. Về cơ bản, mọi thứ đều được tạo đốm màu trong Redis thông qua một khóa (chỉ mục), vì vậy bạn chỉ cần tìm ra các thực thể chính của mình là gì (tức là các gốc tổng hợp) sẽ được lưu giữ trong 'không gian tên khóa' của chính nó hoặc liệu nó có phải là thực thể không chính hay không, tức là đơn giản siêu dữ liệu sẽ được duy trì với thực thể mẹ của nó.

Ví dụ về Redis như một Kho dữ liệu chính

Đây là một bài viết hướng dẫn cách tạo một ứng dụng viết blog đơn giản bằng Redis:

http://www.servicestack.net/docs/redis-client/designs-nosql-database

Bạn cũng có thể xem mã nguồn của RedisStackOverflow để biết một ví dụ khác trong thế giới thực bằng Redis.

Về cơ bản, bạn sẽ cần lưu trữ và tìm nạp các mục của từng loại riêng biệt.

var redisUsers = redis.As<User>();
var user = redisUsers.GetById(1);
var userIsWatching = redisUsers.GetRelatedEntities<Watching>(user.Id);

Cách bạn lưu trữ mối quan hệ giữa các thực thể đang sử dụng Bộ của Redis, ví dụ:bạn có thể lưu trữ mối quan hệ Người dùng / Người theo dõi về mặt khái niệm với:

SET["ids:User>Watcher:{UserId}"] = [{watcherId1},{watcherId2},...]

Redis là giản đồ ít hơn và không có ý tưởng

Lưu trữ id vào các bộ redis là điều cần thiết, tức là bạn có thể thêm watcherId1 vào cùng một tập hợp nhiều lần và nó sẽ chỉ có một lần xuất hiện. Điều này rất hay vì nó có nghĩa là bạn không cần phải kiểm tra sự tồn tại của mối quan hệ và có thể thoải mái thêm các id liên quan như chúng chưa bao giờ tồn tại.

Liên quan:ghi hoặc đọc vào một bộ sưu tập Redis (ví dụ:Danh sách) không tồn tại cũng giống như ghi vào một bộ sưu tập trống, tức là một danh sách được tạo nhanh chóng khi bạn thêm một mục vào danh sách trong khi truy cập vào một danh sách không danh sách tồn tại sẽ chỉ trả về 0 kết quả. Đây là một chiến thắng năng suất và không có ma sát vì bạn không phải xác định trước các lược đồ của mình để sử dụng chúng. Mặc dù nếu bạn cần Redis cung cấp thao tác EXISTS để xác định xem khóa tồn tại hay hoạt động TYPE để bạn có thể xác định loại của nó.

Tạo các mối quan hệ / chỉ mục của bạn trên các bài viết của bạn

Một điều cần nhớ là vì không có chỉ mục ngầm trong Redis, bạn thường cần thiết lập các chỉ mục / mối quan hệ cần thiết để tự đọc trong quá trình viết. Về cơ bản, bạn cần phải suy nghĩ trước về tất cả các yêu cầu truy vấn của mình và đảm bảo bạn thiết lập các mối quan hệ cần thiết tại thời điểm viết. Mã nguồn RedisStackOverflow ở trên là một ví dụ điển hình cho thấy điều này.

Lưu ý:nhà cung cấp ServiceStack.Redis C # giả định rằng bạn có một trường duy nhất được gọi là Id đó là khóa chính của nó. Bạn có thể định cấu hình nó để sử dụng một trường khác với ModelConfig.Id () ánh xạ cấu hình.

Redis Persistance

2) Redis hỗ trợ 2 loại chế độ duy trì ngoài hộp RDB và Chỉ thêm tệp (AOF). RDB viết các ảnh chụp nhanh theo quy trình trong khi tệp Chỉ đính kèm hoạt động giống như một nhật ký giao dịch ghi lại tất cả các thay đổi giữa các ảnh chụp nhanh - Tôi khuyên bạn nên thêm cả hai cho đến khi bạn cảm thấy thoải mái với những gì mỗi cái làm và những gì ứng dụng của bạn cần. Bạn có thể đọc tất cả sự tồn tại của Redis tại http://redis.io/topics/persistence.

Lưu ý Redis cũng hỗ trợ sao chép nhỏ, bạn có thể đọc thêm tại:http://redis.io/topics/replication

Redis thích RAM

3) Vì Redis chủ yếu hoạt động trong bộ nhớ nên tài nguyên quan trọng nhất là bạn có đủ RAM để chứa toàn bộ tập dữ liệu của mình trong bộ nhớ + bộ đệm khi nó chụp nhanh vào đĩa. Redis rất hiệu quả nên ngay cả một phiên bản AWS nhỏ cũng có thể xử lý rất nhiều tải - điều bạn muốn là có đủ RAM.

Trực quan hóa dữ liệu của bạn bằng Giao diện người dùng quản trị Redis

Cuối cùng nếu bạn đang sử dụng ServiceStack C # Redis Client, tôi khuyên bạn nên cài đặt Giao diện người dùng quản trị Redis để cung cấp một cái nhìn trực quan đẹp mắt về các thực thể của bạn. Bạn có thể xem bản demo trực tiếp của nó tại:http://servicestack.net/RedisAdminUI/AjaxClient/




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cố gắng giải quyết các phần phụ thuộc:Thay đổi Thư viện Chuẩn .NET thành NET Core - Microsoft.Extensions.

  2. Pizza Tribes - Trò chơi chiến lược thời gian thực dựa trên trình duyệt nhiều người chơi

  3. So sánh số 64 bit đã ký bằng cách sử dụng các phép toán bit 32 bit trong Lua

  4. Có ứng dụng Redis nào (Java được ưu tiên) hỗ trợ các giao dịch trên Redis cluster không?

  5. Làm cách nào để tìm kiếm khóa băm trong redis?