Je hebt eigenlijk twee strategieën:
-
u kunt uw complexe objecten serialiseren en opslaan als strings. We raden json of msgpack aan voor het serialisatieformaat. Dit is eenvoudig genoeg om te manipuleren vanuit de meeste client-side talen. Als toegang aan de serverzijde nodig is, kan een Lua-script aan de serverzijde dergelijke objecten gemakkelijk coderen/decoderen, aangezien Redis is gecompileerd met ondersteuning voor msgpack en json voor Lua.
-
u kunt uw objecten in verschillende sleutels splitsen. In plaats van user:id en een complexe datastructuur op deze id op te slaan, kunt u verschillende sleutels opslaan, zoals user:id, user:id:address_list, user:id:document_lists, enz ... Als u atomiciteit nodig heeft, kunt u MULTI/ EXEC-blokken kunnen worden gebruikt om de gegevensconsistentie te garanderen en de rondreizen te aggregeren.
Zie een eenvoudig voorbeeld in dit antwoord:
Werkt het LPUSH-commando op een record dat is geïnitialiseerd vanuit JSON?
Ten slotte is Redis geen documentgeoriënteerde database. Als je echt veel complexe documenten hebt, zou je misschien beter bediend kunnen worden door oplossingen zoals MongoDB, ArangoDB, CouchDB, Couchbase, enz ...