2011-09-21 30 views
16

Tôi đang cố tải một lượng lớn dữ liệu vào Redis nhanh nhất có thể.Nhập số lượng lớn vào Redis

Dữ liệu của tôi trông giống như:

771240491921 SOME;STRING;ABOUT;THIS;LENGTH 
345928354912 SOME;STRING;ABOUT;THIS;LENGTH 

Có một số chữ số ~ 12 ở bên trái và một chuỗi dài biến ở bên phải. Chìa khóa sẽ là số ở bên trái và dữ liệu sẽ là chuỗi bên phải.

Trong trường hợp Redis của tôi mà tôi vừa cài đặt ra khỏi hộp và với một tệp văn bản thuần không nén với dữ liệu này, tôi có thể nhận được khoảng một triệu bản ghi vào nó một phút. Tôi cần phải làm khoảng 45 triệu, sẽ mất khoảng 45 phút. 45 phút quá dài.

Có một số chỉnh sửa hiệu suất chuẩn tồn tại để tôi thực hiện loại tối ưu hóa này không? Tôi có nhận được hiệu suất tốt hơn bằng cách sharding trên các trường hợp riêng biệt?

Trả lời

26

Cách nhanh nhất để thực hiện việc này là như sau: tạo giao thức Redis ra khỏi dữ liệu này. Tài liệu để tạo giao thức Redis là trên trang Redis.io, nó là một giao thức tầm thường. Một khi bạn có điều đó, chỉ cần gọi nó appendonly.log và bắt đầu redis trong phụ thêm chế độ duy nhất.

Bạn thậm chí có thể thực hiện lệnh FLUSHALL và cuối cùng đẩy dữ liệu vào máy chủ của bạn bằng netcat, chuyển hướng đầu ra đến/dev/null.

Điều này sẽ cực nhanh, không có RTT để chờ, nó chỉ tải một lượng lớn dữ liệu.

Ít cách tấn công hơn, chỉ cần chèn 1000 thứ mỗi lần bằng pipelining. Nó gần như nhanh như tạo giao thức, nhưng sạch hơn nhiều :)

+0

Btw những gì bạn sử dụng hiện tại để chèn dữ liệu vào Redis? – antirez

+0

Xin cảm ơn! Tuyệt vời để có được câu trả lời trực tiếp từ bạn :) –

+0

Tôi đã nhập vào giao diện cli bằng cách tạo một tập tin là lệnh cli, như: 'set 771240491921 MỘT SỐ; STRING; GIỚI THIỆU, NÀY; LENGTH' và sau đó chuyển nó đến redis-cli –

2

Tôi thích những gì Salvadore đề xuất, nhưng ở đây bạn là một cách rất rõ ràng - tạo nguồn cấp dữ liệu cho cli, ví dụ:

SET xxx yyy 
SET xxx yyy 
SET xxx yyy 

tô nó vào máy chủ trên máy chủ gần bạn. Sau đó, lưu, tắt và di chuyển tệp dữ liệu đến máy chủ đích.

+0

Tôi thực sự thích sự đơn giản trong ý tưởng này. Cảm ơn! –

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