Имате основно две стратегии:
-
можете да сериализирате вашите сложни обекти и да ги съхранявате като низове. Ние предлагаме json или msgpack за формат за сериализация. Това е достатъчно лесно за манипулиране от повечето езици от страна на клиента. Ако е необходим достъп от страна на сървъра, тогава Lua скрипт от страна на сървъра може лесно да кодира/декодира такива обекти, тъй като Redis е компилиран с поддръжка на msgpack и json за Lua.
-
можете да разделите вашите обекти в различни ключове. Вместо да съхранявате user:id и сложна структура от данни към този идентификатор, можете да съхранявате няколко ключа като user:id, user:id:address_list, user:id:document_lists и т.н. ... Ако имате нужда от атомарност, конвейериране MULTI/ EXEC блоковете могат да се използват за гарантиране на последователността на данните и за обобщаване на двупосочните пътувания.
Вижте прост пример в този отговор:
Ще работи ли командата LPUSH върху запис, който е инициализиран от JSON?
И накрая, Redis не е документно ориентирана база данни. Ако наистина имате много сложни документи, може би бихте могли да бъдете по-добре обслужени от решения като MongoDB, ArangoDB, CouchDB, Couchbase и т.н. ...