Về cơ bản, bạn có hai chiến lược:
-
bạn có thể tuần tự hóa các đối tượng phức tạp của mình và lưu trữ chúng dưới dạng chuỗi. Chúng tôi đề xuất json hoặc msgpack cho định dạng tuần tự hóa. Điều này đủ dễ dàng để thao tác từ hầu hết các ngôn ngữ phía máy khách. Nếu cần truy cập phía máy chủ, thì tập lệnh Lua phía máy chủ có thể dễ dàng mã hóa / giải mã các đối tượng như vậy vì Redis được biên dịch với msgpack và hỗ trợ json cho Lua.
-
bạn có thể chia các đối tượng của mình trong các phím khác nhau. Thay vì lưu trữ user:id và một cấu trúc dữ liệu phức tạp cho id này, bạn có thể lưu trữ một số khóa như user:id, user:id:address_list, user:id:document_lists, v.v. Nếu bạn cần tính nguyên tử, pipelining MULTI / Các khối EXEC có thể được sử dụng để đảm bảo tính nhất quán của dữ liệu và tổng hợp các đường vòng.
Xem một ví dụ đơn giản trong câu trả lời này:
Lệnh LPUSH có hoạt động trên bản ghi được khởi tạo từ JSON không?
Cuối cùng, Redis không phải là một cơ sở dữ liệu hướng tài liệu. Nếu bạn thực sự có nhiều tài liệu phức tạp, có lẽ bạn có thể được phục vụ tốt hơn bằng các giải pháp như MongoDB, ArangoDB, CouchDB, Couchbase, v.v.