Redis - Phân vùng
Phân vùng là quá trình chia nhỏ dữ liệu của bạn thành nhiều phiên bản Redis, để mỗi phiên bản sẽ chỉ chứa một tập hợp con các khóa của bạn.
Lợi ích của phân vùng
Nó cho phép cơ sở dữ liệu lớn hơn nhiều, sử dụng tổng bộ nhớ của nhiều máy tính. Không có phân vùng, bạn bị giới hạn dung lượng bộ nhớ mà một máy tính có thể hỗ trợ.
Nó cho phép mở rộng sức mạnh tính toán đến nhiều lõi và nhiều máy tính, và băng thông mạng cho nhiều máy tính và bộ điều hợp mạng.
Nhược điểm của phân vùng
Các thao tác liên quan đến nhiều phím thường không được hỗ trợ. Ví dụ: bạn không thể thực hiện việc giao nhau giữa hai tập hợp nếu chúng được lưu trữ trong các khóa được ánh xạ tới các cá thể Redis khác nhau.
Không thể sử dụng các giao dịch Redis liên quan đến nhiều khóa.
Phân vùng chi tiết là chìa khóa, vì vậy không thể chia nhỏ tập dữ liệu với một khóa lớn duy nhất giống như một tập hợp được sắp xếp rất lớn.
Khi sử dụng phân vùng, việc xử lý dữ liệu sẽ phức tạp hơn. Ví dụ: bạn phải xử lý nhiều tệp RDB / AOF và để có bản sao lưu dữ liệu của mình, bạn cần tổng hợp các tệp liên tục từ nhiều phiên bản và máy chủ.
Việc thêm và xóa dung lượng có thể phức tạp. Ví dụ: Redis Cluster hỗ trợ tái cân bằng dữ liệu chủ yếu trong suốt với khả năng thêm và xóa các nút trong thời gian chạy. Tuy nhiên, các hệ thống khác như phân vùng phía máy khách và proxy không hỗ trợ tính năng này. Một kỹ thuật được gọi làPresharding giúp trong vấn đề này.
Các loại phân vùng
Có hai kiểu phân vùng có sẵn trong Redis. Giả sử chúng ta có bốn phiên bản Redis, R0, R1, R2, R3 và nhiều khóa đại diện cho người dùng như user: 1, user: 2, ..., v.v.
Phân vùng phạm vi
Việc phân vùng theo phạm vi được thực hiện bằng cách ánh xạ các phạm vi đối tượng thành các cá thể Redis cụ thể. Giả sử trong ví dụ của chúng tôi, người dùng từ ID 0 đến ID 10000 sẽ chuyển sang trường hợp R0, trong khi người dùng từ ID 10001 đến ID 20000 sẽ đi vào trường hợp R1, v.v.
Phân vùng băm
Trong kiểu phân vùng này, một hàm băm (ví dụ: hàm mô-đun) được sử dụng để chuyển đổi khóa thành một số và sau đó dữ liệu được lưu trữ trong các phiên bản Redis khác nhau.