Redis
 sql >> Base de Dados >  >> NoSQL >> Redis

Alternativas para estruturas aninhadas no Redis?


Você tem basicamente duas estratégias:

  • você pode serializar seus objetos complexos e armazená-los como strings. Sugerimos json ou msgpack para o formato de serialização. Isso é fácil de manipular na maioria das linguagens do lado do cliente. Se o acesso do lado do servidor for necessário, um script Lua do lado do servidor pode codificar/decodificar facilmente esses objetos, pois o Redis é compilado com suporte a msgpack e json para Lua.

  • você pode dividir seus objetos em chaves diferentes. Ao invés de armazenar user:id e uma estrutura de dados complexa para este id, você pode armazenar várias chaves como user:id, user:id:address_list, user:id:document_lists, etc... Se precisar de atomicidade, pipelining MULTI/ Blocos EXEC podem ser usados ​​para garantir a consistência dos dados e agregar as viagens de ida e volta.

Veja um exemplo simples nesta resposta:

O comando LPUSH funcionará em um registro que foi inicializado de JSON?

Por fim, o Redis não é um banco de dados orientado a documentos. Se você realmente tem muitos documentos complexos, talvez possa ser melhor atendido por soluções como MongoDB, ArangoDB, CouchDB, Couchbase, etc...