2014-06-05 12 views
5

tôi sau này Redis hướng dẫn http://redis.io/topics/twitter-cloneRedis thêm nhiều hơn một mục để Sắp xếp Set

Vào cuối của trang họ nói

Lưu ý: LRANGE không phải là rất hiệu quả nếu danh sách các bài viết bắt đầu là rất lớn và chúng tôi muốn truy cập các yếu tố nằm ở giữa danh sách , vì Danh sách Redis được hỗ trợ bởi danh sách được liên kết. Nếu hệ thống là được thiết kế để phân trang sâu hơn hàng triệu mục, thì tốt hơn là nên chọn khu nghỉ mát để Sắp xếp các bộ.

Đó là lo lắng lớn nhất của tôi vì chúng tôi đang thiết kế một hệ thống có khả năng xử lý hàng triệu nếu không phải hàng tỷ bài đăng và chúng tôi ước tính rằng một mục sẽ được tìm kiếm ở giữa danh sách 20-30% thời gian ứng dụng web đang chạy.

Có một vấn đề với một bộ sắp xếp dù .. Bạn có thể thêm một sắp xếp thiết lập như sau, dùng trong tài khoản rằng đó là (1) đầu tiên gửi

zadd zset 1 "We are happy to announce a new member in our team" 

Nhưng nếu chúng ta cần thêm một lĩnh vực nội dung quá?

zadd zset 1 "We are happy to announce a new member in our team" "Please welcome James Sullivan, our new member team! He had..." 

Đây là lỗi mà bạn có được

(error) ERR syntax error 

khác so với thực tế kỳ lạ mà bạn phải truy cập vào các lĩnh vực như post[0]post[1] thay vì post['title']post['content'] (về mặt lý thuyết, tôi đã chưa không đã thử nó) cũng có thực tế rằng chúng ta không thể vượt qua bây giờ.

Thực tế cấu trúc của một bài đối tượng là như thế này và nó phải có thể tìm thấy trong thời gian O (1) thời gian thậm chí ở giữa triệu bài đối tượng

+-----------+ 
+- 1 <- ID -+ 
+-----------+ 
+------------------------+ 
+- title "the title..." -+ 
+----------------------------+ 
+- content "the content..." -+ 
+-----------------------------+ 
+- tags "1st tag, 2nd tag.." -+ 
+-----------------------+ 
+- author "the_author" -+ 
+-------------------------+ 
+- date "unix_timestamp" -+ 
+-------------------------+ 

Tôi đang ở một mất mát nếu một Sắp xếp Set là cấu trúc dữ liệu phải để sử dụng và nếu không sử dụng cái nào (bộ, bộ được sắp xếp, danh sách, băm ..).

Bạn sẽ đề xuất điều gì trong trường hợp này?

Trả lời

2

Bộ sắp xếp là cấu trúc dữ liệu lý tưởng cho nội dung bạn muốn sắp xếp nhưng, như bạn đã lưu ý, các thành viên của nhóm là chuỗi. Trong trường hợp đó, bạn có hai tùy chọn có thể:

  1. serialization: bạn có thể thực hiện riêng của bạn hoặc sử dụng một cái gì đó đã sẵn sàng (ví dụ JSON) để lưu trữ nhiều yếu tố trong mỗi thành viên của bộ này.

  2. Đặt nội dung của các thành viên trong nhóm của bạn là tên của các khóa khác và lưu trữ các đối tượng của bạn trong các khóa được tham chiếu này - loại dữ liệu HASH có vẻ phù hợp với nhu cầu của bạn.

+1

Tôi nghĩ tôi sẽ đi với tùy chọn đầu tiên. – user3710273

Các vấn đề liên quan