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

Шрифт
Фон

rodrigo é membro do grupo (judo)? NÃO

gustavo é membro do grupo (livro)? SIM

cristiane é membro do grupo (cachorro)? SIM

andressa é membro do grupo (cachorro)? NÃO

carlos é membro do grupo (violao)? NÃO

Obter todos os relacionamentos de uma pessoa que também per-

tence a determinado grupo

Esta é a última parte do exemplo. Nesse ponto, vamos conhecer mais

um novo comando para o tipo de dados set. É o SINTER, que serve para comparar dois ou mais conjuntos e retornar os itens em comum entre eles.

No nosso exemplo, nós queremos comparar os relacionamentos de pessoas

com os membros de um grupo e verificar quais pessoas estão em ambos os

conjuntos. Vamos realizar isso em um programa Java:

public class CompararRelacionamentosComMembrosDoGrupo {

public void verAmigosDoGrupo(String pessoa, String grupo) {

String chavePessoa = String.format(

"pessoas:%s:relacionamentos", pessoa

);

String chaveGrupo = String.format(

"grupos:%s:membros", grupo

);

Jedis jedis = new Jedis("localhost");

Set<String> pessoas = jedis.sinter(chavePessoa,

chaveGrupo);

System.out.println(

74

Casa do Código

Capítulo 5. Redis no mundo real Parte 3

String.format(

"%s são amigos de %s " +

"e fazem também parte do grupo que gosta de %s",

pessoas.toString(),

pessoa,

grupo

)

);

}

public static void main(String[] args) {

CompararRelacionamentosComMembrosDoGrupo relacionamentos

= new CompararRelacionamentosComMembrosDoGrupo();

relacionamentos.verAmigosDoGrupo("rafael", "cachorro"); relacionamentos.verAmigosDoGrupo("rodrigo",

"video-game");

relacionamentos.verAmigosDoGrupo("andressa", "novela");

}

}

O resultado desse código Java é:

[tereza, rodrigo] são amigos de rafael e fazem também

parte

do grupo que gosta de cachorro

[rafael, carlos] são amigos de rodrigo e fazem também parte

do grupo que gosta de video-game

[cristiane] são amigos de andressa e fazem também parte

do grupo que gosta de novela

Com este último programa, encerramos nosso exemplo sobre a estrutura

de dados SET. Existem outros comandos interessantes que podem ser utili-

zados por conjuntos, e para estes deixarei que o leitor utilize-os nos exercícios propostos para esta seção.

75

5.3. Manipular relacionamento entre amigos e seus grupos

Casa do Código

Exercícios sobre conjuntos

1) O comando SMOVE move o elemento de um conjunto para outro; utilize-o

para mover o membro rodrigo do grupo video-game para o grupo

judo;

2) O comando SREM remove um ou mais elementos de um conjunto asso-

ciado a uma chave. Utilize-o para remover o membro novela do grupo

novela;

3) O comando SDIFF retorna os elementos do primeiro conjunto que não

existem nos outros conjuntos comparados. Utilize-o entre os relaciona-

mentos da pessoa cristiane e a pessoa gustavo e veja quais relacio-

namentos eles não têm em comum.

Referência rápida de comandos para conjuntos

SADD chave valor [valor ...] adiciona um ou mais valores

ao conjunto definido pela chave. Caso um valor já exista no conjunto,

este será ignorado;

SCARD chave retorna a quantidade de itens armazenados em um

conjunto;

SINTER chave [chave ...] retorna os elementos resultantes

entre uma intersecção dos conjuntos informados;

SISMEMBER chave valor retorna 1 se o valor informado existe

no conjunto informado pela chave, caso o valor não exista o comando

retorna o valor 0;

SMEMBERS chave retorna todos os elementos de um conjunto de-

finido pela chave informada.

76

Casa do Código

Capítulo 5. Redis no mundo real Parte 3

5.4

Próximos passos

Neste capítulo, nós conhecemos dois novos tipos de dados, o List e Set. Tam-bém aprendemos a criar filas no Redis e em que cenário podemos utilizá-las.

Esse que é um recurso muito útil e muito utilizado em diversos tipos de apli-cações.

No próximo capítulo, vamos ver a última parte de exemplos práticos uti-

lizando o Redis e conhecer o último tipo de dado suportado pelo Redis que

ainda não foi apresentado, o Sorted Set.

77

Capítulo 6

Redis no mundo real Parte 4

Chegamos na última parte de exemplos de uso reais com o Redis! Recapitu-

lando rapidamente, nós já conhecemos os tipos de dados string, hash e set.

Nesta parte, vamos conhecer o último tipo de dado fornecido pelo Redis, que é o sorted set.

6.1

Armazenando as vitórias dos usuários em

um jogo

Nesse exemplo, nós temos que armazenar as vitórias dos usuários de um jogo

online. A regra para armazenar o números de vitórias é bem simples: se o

jogador venceu, adicionamos 1 ponto ao seu número de vitórias ou retiramos

1 ponto caso o jogador tenha perdido.

Uma forma de fazer isso com o Redis é utilizar um hash para representar

6.1. Armazenando as vitórias dos usuários em um jogo

Casa do Código

o jogador e seus dados, que são seu nome e a suas vitórias (pontuação). Para ficar mais claro, vamos inserir um usuário conforme o seguinte código:

int codigoJogador = 1;

String nomeJogador = "Rafael";

String chave = String.format("jogador:%04d:codigo",

codigoJogador);

Jedis jedis = new Jedis("localhost");

long resultado1 = jedis.hset(chave, "nome", nomeJogador);

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

0
Шрифт
Фон

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