String chave = String.format(
"pessoas:%s:relacionamentos", pessoa);
Jedis jedis = new Jedis("localhost");
long resultado = jedis.sadd(chave, amigos);
System.out.println(
64
Casa do Código
Capítulo 5. Redis no mundo real Parte 3
String.format(
"%s tem %d amigos %s",
pessoa,
resultado,
Arrays.toString(amigos)
)
);
}
public static void main(String[] args) {
ConjuntoDeRelacionamentoEntrePessoas relacionamentos =
new ConjuntoDeRelacionamentoEntrePessoas();
relacionamentos.adicionaAmigos(
"rafael",
new String[] { "gustavo", "andressa",
"rodrigo", "tereza" }
);
relacionamentos.adicionaAmigos(
"andressa",
new String[] { "cristiane", "rodrigo",
"gustavo", "rafael" }
);
relacionamentos.adicionaAmigos(
"gustavo",
new String[] { "carlos", "tereza",
"rafael", "andressa" }
);
relacionamentos.adicionaAmigos(
"cristiane",
new String[] { "tereza",
"andressa", "carlos" }
);
relacionamentos.adicionaAmigos(
"carlos",
65
5.3. Manipular relacionamento entre amigos e seus grupos
Casa do Código
new String[] { "cristiane",
"rodrigo", "gustavo" }
);
relacionamentos.adicionaAmigos(
"rodrigo",
new String[] { "andressa",
"rafael", "carlos" }
);
relacionamentos.adicionaAmigos(
"tereza",
new String[] { "gustavo",
"rafael", "cristiane" }
);
}
}
Nesse código, tudo o que fizemos foi usar o comando SADD para adicionar
um conjunto representado por uma chave e seus respectivos itens (valores).
O comando SADD adiciona um ou mais itens ao conjunto (chave) informado
como parâmetro, e ele retorna a quantidade de itens que foram inseridos no
conjunto. O código apresenta o seguinte resultado:
rafael tem 4 amigos [gustavo, andressa, rodrigo, tereza]
andressa tem 4 amigos [cristiane, rodrigo, gustavo, rafael]
gustavo tem 4 amigos [carlos, tereza, rafael, andressa]
cristiane tem 3 amigos [tereza, andressa, carlos]
carlos tem 3 amigos [cristiane, rodrigo, gustavo]
rodrigo tem 3 amigos [andressa, rafael, carlos]
tereza tem 3 amigos [gustavo, rafael, cristiane]
Veja a seguir uma ilustração 5.3 de cada pessoa e seus relacionamentos:
66
Casa do Código
Capítulo 5. Redis no mundo real Parte 3
Figura 5.3: Relacionamento entre amigos
Já temos as pessoas e seus relacionamentos (amigos) definidos, agora va-
mos criar alguns grupos de pessoas (membros) conforme seus interesses. Para isso, vamos utilizar um código muito semelhante ao usado para criar o set de pessoas. Veja o código a seguir:
public class ConjuntoDeGrupoDePessoas {
public void adicionaMembrosAoGrupo(String grupo,
String[] membros) {
String chave = String.format("grupos:%s:membros", grupo);
Jedis jedis = new Jedis("localhost");
long resultado = jedis.sadd(chave, membros);
System.out.println(
String.format(
"Grupo (%s) tem %d membros %s",
grupo,
resultado,
Arrays.toString(membros)
67
5.3. Manipular relacionamento entre amigos e seus grupos
Casa do Código
)
);
}
public static void main(String[] args) {
ConjuntoDeGrupoDePessoas relacionamentos =
new ConjuntoDeGrupoDePessoas();
relacionamentos.adicionaMembrosAoGrupo(
"video-game",
new String[] { "rafael", "gustavo", "carlos",
"rodrigo" }
);
relacionamentos.adicionaMembrosAoGrupo(
"judo",
new String[] { "rafael" }
);
relacionamentos.adicionaMembrosAoGrupo(
"natacao",
new String[] { "rafael", "cristiane" }
);
relacionamentos.adicionaMembrosAoGrupo(
"kung-fu",
new String[] { "andressa" }
);
relacionamentos.adicionaMembrosAoGrupo(
"violao",
new String[] { "gustavo" }
);
relacionamentos.adicionaMembrosAoGrupo(
"ciclismo",
new String[] { "cristiane" }
);
68
Casa do Código
Capítulo 5. Redis no mundo real Parte 3
relacionamentos.adicionaMembrosAoGrupo(
"cachorro",
new String[] { "cristiane", "rodrigo",
"tereza" }
);
relacionamentos.adicionaMembrosAoGrupo(
"moto",
new String[] { "carlos" }
);
relacionamentos.adicionaMembrosAoGrupo(
"carro",
new String[] { "carlos", "rodrigo" }
);
relacionamentos.adicionaMembrosAoGrupo(
"livro",
new String[] { "gustavo", "rodrigo" }
);
relacionamentos.adicionaMembrosAoGrupo(
"novela",
new String[] { "andressa", "cristiane",
"tereza" }
);
}
}
O resultado do código que acabamos de criar é:
Grupo (video-game) tem 4 membros [rafael, gustavo, carlos,
rodrigo]
Grupo (judo) tem 1 membros [rafael]
Grupo
(natacao) tem 2 membros [rafael, cristiane]
Grupo (kung-fu) tem 1 membros [andressa]
Grupo (violao) tem 1 membros [gustavo]
Grupo (ciclismo) tem 1 membros [cristiane]
Grupo (cachorro) tem 3 membros [cristiane, rodrigo, tereza]
69
5.3. Manipular relacionamento entre amigos e seus grupos
Casa do Código
Grupo (moto) tem 1 membros [carlos]
Grupo (carro) tem 2 membros [carlos, rodrigo]
Grupo (livro) tem 2 membros [gustavo, rodrigo]
Grupo (novela) tem 3 membros [andressa, cristiane, tereza]
Saber quantas pessoas pertencem a cada grupo
Agora que temos todas as informações necessárias para o exemplo já ar-
mazenadas no Redis, vamos utilizar alguns comandos interessantes que estão
disponíveis para o tipo de dado set. O primeiro comando que vamos utilizar