Lazoti Rodrigo - Armazenando dados com Redis стр 20.

Шрифт
Фон

é o SCARD e vamos usá-lo para saber o total de pessoas que pertencem a cada grupo, pois ele retorna a cardinalidade ou a quantidade de elementos em um

conjunto. Veja seu uso no seguinte exemplo:

public class TotalDePessoasPorGrupo {

public void mostrarQuantidadeDeMembros(String grupo) {

String chave = String.format("grupos:%s:membros", grupo);

Jedis jedis = new Jedis("localhost");

long resultado = jedis.scard(chave);

System.out.println(

String.format("Grupo (%s) tem %d membros", grupo,

resultado)

);

}

public static void main(String[] args) {

TotalDePessoasPorGrupo grupo =

new TotalDePessoasPorGrupo();

grupo.mostrarQuantidadeDeMembros("video-game");

grupo.mostrarQuantidadeDeMembros("judo");

grupo.mostrarQuantidadeDeMembros("natacao");

grupo.mostrarQuantidadeDeMembros("kung-fu");

grupo.mostrarQuantidadeDeMembros("violao");

grupo.mostrarQuantidadeDeMembros("ciclismo");

grupo.mostrarQuantidadeDeMembros("cachorro");

grupo.mostrarQuantidadeDeMembros("moto");

70

Casa do Código

Capítulo 5. Redis no mundo real Parte 3

grupo.mostrarQuantidadeDeMembros("carro");

grupo.mostrarQuantidadeDeMembros("livro");

grupo.mostrarQuantidadeDeMembros("novela");

}

}

O resultado do código anterior é muito parecido com o resultado de

quando incluímos os grupos. Veja:

Grupo (video-game) tem 4 membros

Grupo (judo) tem 1 membros

Grupo (natacao) tem 2 membros

Grupo (kung-fu) tem 1 membros

Grupo (violao) tem 1 membros

Grupo (ciclismo) tem 1 membros

Grupo (cachorro) tem 3 membros

Grupo (moto) tem 1 membros

Grupo (carro) tem 2 membros

Grupo (livro) tem 2 membros

Grupo (novela) tem 3 membros

Listar as pessoas que são membros de um determinado grupo

O próximo exemplo que vamos criar é para listar as pessoas que são mem-

bros de um determinado grupo. Para fazermos isso, precisamos conhecer um

novo comando chamado SMEMBERS, que recebe como parâmetro o nome

(chave) do conjunto (set) que queremos acessar e retorna todos os elementos contidos no conjunto. Vamos verificar seu uso no exemplo a seguir:

public class ListarPessoasDosGrupos {

public void listarMembros(String grupo) {

String chave = String.format("grupos:%s:membros", grupo);

Jedis jedis = new Jedis("localhost");

Set<String> membros = jedis.smembers(chave);

System.out.println(

String.format(

71

5.3. Manipular relacionamento entre amigos e seus grupos

Casa do Código

"Membros do grupo (%s): %s", grupo,

membros.toString()

)

);

}

public static void main(String[] args) {

ListarPessoasDosGrupos grupos =

new ListarPessoasDosGrupos();

grupos.listarMembros("video-game");

grupos.listarMembros("judo");

grupos.listarMembros("natacao");

grupos.listarMembros("kung-fu");

grupos.listarMembros("violao");

grupos.listarMembros("ciclismo");

grupos.listarMembros("cachorro");

grupos.listarMembros("moto");

grupos.listarMembros("carro");

grupos.listarMembros("livro");

grupos.listarMembros("novela");

}

}

O resultado desse exemplo é:

Membros

do grupo (video-game): [gustavo, rafael, carlos,

rodrigo]

Membros do grupo (judo): [rafael]

Membros do grupo (natacao): [rafael, cristiane]

Membros do grupo (kung-fu): [andressa]

Membros do grupo (violao): [gustavo]

Membros do grupo (ciclismo): [cristiane]

Membros do grupo (cachorro): [tereza, cristiane, rodrigo]

Membros do grupo (moto): [carlos]

Membros do grupo (carro): [carlos, rodrigo]

Membros do grupo (livro): [gustavo, rodrigo]

Membros do grupo (novela): [andressa, tereza, cristiane]

72

Casa do Código

Capítulo 5. Redis no mundo real Parte 3

Saber se uma pessoa é membro de um determinado grupo

Para realizar essa tarefa, poderíamos obter todos os elementos do con-

junto, iterar sobre eles e validar se algum dos elementos contém o valor que procuramos. Sim, isso é possível e funciona, mas o Redis já fornece um comando para verificar isso de forma automática. O comando para isso é o

SISMEMBER repare que não é o mesmo comando SMEMBERS que usa-

mos no exemplo anterior. Esse comando recebe, além do nome (chave) do

conjunto, o valor que queremos validar se existe no conjunto. O valor 1 é retornado quando o valor existe, e o valor 0 é retornado quando o valor não

existe.

Vejamos agora um exemplo de uso desse comando:

public class PessoaExisteNoGrupo {

public void existe(String grupo, String pessoa) {

String chave = String.format("grupos:%s:membros",

grupo);

Jedis jedis = new Jedis("localhost");

boolean resultado = jedis.sismember(chave, pessoa);

System.out.println(

String.format(

"%s é membro do grupo (%s)? %s",

pessoa,

grupo,

resultado ? "SIM" : "NÃO"

)

);

}

public static void main(String[] args) {

PessoaExisteNoGrupo pessoa = new PessoaExisteNoGrupo();

pessoa.existe("judo", "rodrigo");

pessoa.existe("livro", "gustavo");

pessoa.existe("cachorro", "cristiane");

pessoa.existe("cachorro", "andressa");

73

5.3. Manipular relacionamento entre amigos e seus grupos

Casa do Código

pessoa.existe("violao", "carlos");

}

}

O resultado apresentado pelo exemplo anterior foi:

Ваша оценка очень важна

0
Шрифт
Фон

Помогите Вашим друзьям узнать о библиотеке