4
respostas

Pensando um pouco além na busca por chave

Não sei se isso será abordado mais pra frente, estou colocando a dúvida já senão vou esquecer. Entendo que num cenário do mundo real, posso querer encontrar datas entre por exemplo: 04-02 até 12-02. Como poderia fazer essa busca?

4 respostas

Olá Rafael, tudo bem?

No redis não é possível utilizar os operadores comuns como AND ou OR para filtrar um período especifico na busca de KEYS. Por isso você não vai conseguir realizar uma busca neste período especifico que deseja de 04-02 até 12-02, mas pode buscar de outras formas como:

Utilizando o caractere “*” ,que substitui um ou mais caracteres nas KEYS, para fazer buscas separadas, então primeiramente buscar as datas entre o dia 01 até o dia 09 e em seguida buscar entre o dia 10 até o dia 19:

  • Informando o primeiro caractere como 0 e o segundo caractere como * referente ao campo dia:
Keys chave:0*-02-2015

Neste caso esta buscando todas as chaves que o dia inicie com 0 e qualquer outro numero no segundo caractere do dia, no caso buscando datas entre 01-02-2015 e 09-02-2015

  • Informando o primeiro caractere como 1 e o segundo caractere como * referente ao campo dia:
Keys chave:1*-02-2015

Neste caso esta buscando todas as chaves que o dia inicie com 1 e qualquer outro numero no segundo caractere do dia, no caso buscando datas entre 10-02-2015 e 19-02-2015

Uma outra opção seria o "[]" (colchetes) que é usado para filtrar caracteres alternativos ao mesmo tempo, passando a lista que queremos encontrar correspondência dentro dos colchetes assim podendo fazer a busca de uma unica vez:

  • Informando entre colchetes [01] e o segundo caractere como * referente ao campo dia:
Keys chave:[01]*-02-2015

Neste caso esta buscando todas as chaves que o dia inicie com 0 ou 1 e qualquer outro numero no segundo caractere do dia, no caso buscando datas entre 01-02-2015 e 19-02-2015.

Fala se entendeu!

Olá, acredito que o que está explicando já está no curso. Estou tentando ir além,

Acredito que, agora que terminei o curso, como o Guilherme falou, utilizamos o Redis para questões específicas, logo, acredito que devemos modelar as chaves para que elas nos sirvam a um propósito específico. Portanto, por exemplo, se eu precisasse ranquear algo de acordo com um período, talvez faça sentido ter uma tabela de período e a chave conter o ID desse período e eu acumular valores nesse id, assim quando precisar do rank por exemplo, poderia pegar diretamente.

Após fazer os dois cursos, percebi que a arte está em modelar as chaves corretamente.

Bem Rafael, na sua pergunta inicial você procurava encontrar os dados entre as datas 04-02 e 12-02, e como falei no post anterior não é possível isso nos Redis utilizando o comando KEYS. E realmente é isso no Redis a grande questão é modelar as chaves corretamente de acordo com a sua necessidade.Mas não entendi muito bem o que você quer dizer quando fala: "Ter uma tabela de período e a chave conter o ID desse período e eu acumular valores nesse id". Esta se referindo a ter um banco onde armazenam todos os dados, e no Redis você apenas criar uma chave com o ID para acumular a pontuação. Seria isso?

Oi Danielle, exatamente isso.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software