基本的に2つの戦略があります:
-
複雑なオブジェクトをシリアル化し、文字列として保存できます。シリアル化形式にはjsonまたはmsgpackをお勧めします。これは、ほとんどのクライアント側言語から操作するのに十分簡単です。サーバー側のアクセスが必要な場合、RedisはLuaのmsgpackとjsonのサポートを使用してコンパイルされるため、サーバー側のLuaスクリプトはそのようなオブジェクトを簡単にエンコード/デコードできます。
-
オブジェクトを異なるキーに分割できます。 user:idと複雑なデータ構造をこのIDに格納する代わりに、user:id、user:id:address_list、user:id:document_listsなどのいくつかのキーを格納できます...アトミック性が必要な場合は、MULTI/をパイプライン化します。 EXECブロックを使用して、データの一貫性を保証し、ラウンドトリップを集約できます。
この回答の簡単な例を参照してください:
LPUSHコマンドは、JSONから初期化されたレコードで機能しますか?
最後に、Redisはドキュメント指向のデータベースではありません。本当に複雑なドキュメントがたくさんある場合は、MongoDB、ArangoDB、CouchDB、Couchbaseなどのソリューションの方が適している可能性があります...