Pergunta

Eu tenho experimentado Redis e gosto muito da escalabilidade que ela traz para a mesa. No entanto, estou me perguntando como lidar com mudanças nas estruturas de dados para um sistema que já está em produção.

Por exemplo, deixe -me dizer que estou coletando informações sobre um usuário e uso o user_id como uma chave e despejando os outros dados sobre o usuário como valores separados por vírgula.

user_id: name, email, etc.

Agora, digamos após cerca de 100.000 registros, percebo que precisava consultar por email - Como agora eu tiraria um instantâneo dos dados existentes e criaria um novo índice para ele?

Foi útil?

Solução

Pela minha compreensão de Redis, isso exigiria algo que Redis não foi projetado para fazer. Você teria que fazer loop através de todos os seus registros (usando chaves *) e alterar a ordem dos dados e fazer uma nova tecla. Eu, pessoalmente, recomendaria o uso de uma lista em vez de uma string separada por vírgula. Em uma lista, você pode reordená -lo de dentro do Redis. Uma lista Redis parece o seguinte:

"Colum" => [0] c.mcgaley@gmail.com
            [1] password
            [2] Something

Estou construindo um aplicativo no qual encontrei o mesmo problema. Eu resolvi com uma lista para todas as informações do usuário e, em seguida, tenho uma chave com o email do usuário com um valor do ID do usuário. Então, meu banco de dados seria algo assim:

"Colum" => [0] c.mcgaley@gmail.com
            [1] password
            [2] Something
"c.mcgaley@gmail.com" => "Colum"

Então, eu poderia consultar o ID ou o email e ainda obter as informações de que precisava.

Lamento não ter conseguido responder diretamente à sua pergunta. Só espero que isso tenha ajudado.

Outras dicas

Usar CSV não é uma ótima idéia se você deseja apoiar alterações. Você precisa usar um serializador que lida com os valores ausentes/novos, se tudo estiver em uma chave, ou você pode usar um hash redis, o que fornece subtides nomeadas. De qualquer maneira, você pode adicionar/remover campos com o único requisito de que seu código saiba o que fazer se lê um registro sem o novo valor.

Para permitir a pesquisa por e -mail, você precisa adicionar um índice - basicamente uma chave (ou lista) para cada email com o ID do usuário como o valor. Você precisará preencher esse índice obtendo todas as teclas uma vez e, em seguida, atualize -o quando os emails mudarem.

Você pode iterar sobre todas as teclas e armazená -las com um ID diferente, mas isso provavelmente é mais problemas do que vale a pena.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top