2012-01-24 39 views
21

Tôi có JSON (< 1k) để lưu trữ trong Redis thông qua node.js. Những ưu và khuyết điểm của việc lưu trữ nó như là một đối tượng hoặc chuỗi là gì? Có những lựa chọn nào khác mà tôi đã bỏ lỡ không? Tất cả việc xử lý cuối cùng sẽ xảy ra ở phía máy khách, do đó việc chuyển đổi thành một đối tượng là không cần thiết.Tôi nên lưu trữ JSON bằng redis như thế nào?

SET

var images = JSON.parse(data);   // data is already JSON, is this needed? 
callback(images);      // sends result to the user 
r.set('images:' + req.query, images); // saving the object 

GET

callback(images); 

Trả lời

32

Bạn có thể lưu trữ JSON trong redis hoặc như là một chuỗi đồng bằng ở phím chuyên dụng (hoặc thành viên/giá trị của một tập/list) hoặc trong cấu trúc hash. Nếu bạn xem tài liệu node_redis thành Lệnh băm trước đây phần bạn sẽ thấy rằng nó cung cấp cho bạn một số phương pháp hữu ích để thao tác dữ liệu dựa trên JSON. Ưu điểm của phương pháp này là nó cho phép bạn có được/thiết lập chỉ một phần của đối tượng ban đầu và nó cũng có thể consume less memory so với các chuỗi đơn giản.

+0

Cảm ơn! Hình như con của cấu trúc băm là việc truy xuất chậm hơn nhiều, vì bạn sẽ phải lặp qua từng trường để tạo lại bản gốc. – tofutim

+1

Bạn có thể lấy toàn bộ hàm băm bằng lệnh HGETALL và mặc dù độ phức tạp của nó là O (n) Tôi nghĩ hiệu suất sẽ chỉ bị ảnh hưởng rõ ràng với số lượng lớn cặp giá trị/trường. – yojimbo87

+1

Liên kết cho các lệnh băm trước tiên https://github.com/mranney/node_redis#friendlier-hash-commands – ravindrab

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