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

Шрифт
Фон

Esse padrão (pattern) passado como parâmetro para o comando KEYS

utiliza o Glob-style pattern matching [3]. Para exemplificar seu uso, imagine que tenhamos as chaves bala, bela, bola e bicicleta armazenadas.

Confira a seguir alguns exemplos de como usar esse pattern para buscar de-

terminadas chaves:

O caractere * representa um conjunto de caracteres que podem ser zero

ou mais caracteres. Exemplo: b*a encontraria bala, bela, bola e

bicicleta;

O caractere ? representa um único caractere. Exemplo: b?la encon-

traria bala, bela e bola;

Colchetes

[] representam um grupo de caracteres.

Exemplo:

b[ae]la encontraria bala e bela.

20

Casa do Código

Capítulo 3. Redis no mundo real Parte 1

Por exemplo, veja como podemos usar esse comando para obter todas as

chaves armazenadas no Redis independente de seu tipo, conforme o exemplo

a seguir feito no CLI:

redis 127.0.0.1:6379> KEYS *

1) "resultado:04-09-2013:megasena"

2) "resultado:07-09-2013:megasena"

3) "resultado:megasena"

4) "resultado:21-09-2013:megasena"

5) "resultado:02-10-2013:megasena"

Quando

usamos o caractere * sozinho como pattern para o comando

KEYS, estamos dizendo para o Redis que queremos todas as chaves armaze-

nadas.

Ainda no CLI, vamos ver como podemos obter todas as chaves que utili-

zam o nosso novo padrão resultado:dd-mm-yyyy:megasena. Mas além

disso, vamos obter apenas as chaves cujo dia esteja entre 01 e 09:

redis 127.0.0.1:6379> KEYS resultado:0?-*-*:megasena

1) "resultado:04-09-2013:megasena"

2) "resultado:07-09-2013:megasena"

3) "resultado:02-10-2013:megasena"

Esse mesmo pattern poderia ser escrito de outras formas, conforme a lista

apresentada a seguir, mas ainda assim também produziram o mesmo resul-

tado apresentado anteriormente.

KEYS resultado:0?-??-????:megasena

KEYS resultado:0*-??-????:megasena

KEYS resultado:0?-*-????:megasena

KEYS resultado:0*-*-????:megasena

KEYS resultado:0?-??-*:megasena

KEYS resultado:0*-??-*:megasena

KEYS resultado:0?-*:megasena

KEYS resultado:0*-*:megasena

Agora que já entendemos como utilizar o comando KEYS para obtermos

apenas as chaves que desejamos, a tarefa de filtrar os resultados por mês e ano do sorteio ficou fácil. Dando continuidade ao nosso exemplo, vamos escrever 21

3.2. Encontrando as chaves armazenadas

Casa do Código

um método em Java que realize a tarefa de filtrar os resultados da página de histórico, conforme o exemplo a seguir:

public class FiltrarHistoricoDaMegaSena {

public Set<String> filtrarResultados(int mes, int ano) {

String chave = "resultado:*-%02d-%04d:megasena";

Jedis jedis = new Jedis("localhost");

return jedis.keys(String.format(chave, mes, ano));

}

public static void main(String[] args) {

int mes = 10;

int ano = 2013;

Set<String> chaves =

new FiltrarHistoricoDaMegaSena()

.filtrarResultados(mes, ano);

System.out.println(chaves);

}

}

O exemplo de uso do código anterior apresentará quando executado o

resultado:

[resultado:02-10-2013:megasena]

Exercícios sobre Strings

1) O comando MGET retorna os valores de várias chaves de uma única vez,

assim como o MSET que utilizamos anteriormente. Utilize-o para obter

todas as chaves armazenadas no Redis.

2) O comando STRLEN retorna o tamanho do valor associado a uma chave

que ele recebe como parâmetro. Utilize-o para descobrir o tamanho do

valor correspondente a chave resultado_megasena.

22

Casa do Código

Capítulo 3. Redis no mundo real Parte 1

3) O comando GETRANGE retorna um pedaço do valor associado a uma

chave de acordo com uma posição inicial e uma posição final (até a ver-

são 2.0 do Redis esse comando era chamado SUBSTR). Utilize-o para

obter os dois primeiros números (2, 13) armazenados na chave resul-

tado_megasena.

Referência rápida de comandos para Strings

APPEND chave valor adiciona o valor a uma chave existente, ou

cria uma nova chave (caso esta ainda não exista) com seu respectivo

valor;

DEL chave [chave ...] remove a(s) chave(s) informada(s) e

seu(s) respectivo(s) valor(es);

GET chave retorna o valor correspondente à chave informada;

GETRANGE chave inicio fim retorna uma parte da string ar-

mazenada conforme a chave informada;

MGET chave [chave ...] retorna os valores correspondentes

às chaves informadas;

MSET chave valor [chave valor ...] armazena um ou

mais conjuntos de chave valor. Caso uma chave informada já exista,

seu valor será sobrescrito pelo novo;

SET chave valor armazena a chave e seu respectivo valor. Caso

já exista uma chave definida, seu valor é sobrescrito;

STRLEN chave retorna o tamanho da string armazenada conforme

a chave informada.

3.3

Utilizando hashes

No Redis, um hash nada mais é do que um map que contém campos e valores

do tipo string. Este tipo de dado é muito utilizado para representar objetos 23

3.3. Utilizando hashes

Casa do Código

definidos em nossas aplicações, como por exemplo um usuário que contém

um nome, e-mail e data de nascimento. Cada hash pode armazenar mais de

4 bilhões de

pares de campo-valor [1].

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

0
Шрифт
Фон

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