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

Шрифт
Фон

A mensagem de resultado do exemplo anterior é:

A lista ultimas_paginas_visitadas contém 5 elementos

Para validarmos que a lista que acabamos de criar contém os cinco ele-

mentos, vamos executar o comando LLEN pelo CLI informando a chave que

corresponde à nossa lista e conferir seu tamanho:

redis 127.0.0.1:6379> LLEN ultimas_paginas_visitadas

(integer) 5

Já temos uma lista

populada no Redis com as últimas páginas visitadas,

mas, embora tenhamos armazenado 5 elementos na nossa lista, vamos definir

51

5.1. Lista das últimas páginas visitadas

Casa do Código

que iremos exibir apenas as três últimas páginas recentemente visitadas. Podemos utilizar o comando LRANGE, e para isso basta informar o índice inicial e o índice final dos elementos que queremos recuperar e assim obtemos uma

quantidade limitada de elementos de uma lista.

Os índices utilizados no comando LRANGE iniciam pelo número 0, que

representa o último item adicionado à lista ou o topo da lista (head). Tam-

bém é possível utilizar números negativos como índice, como por exemplo o

número -1, que se refere ao primeiro item adicionado à lista ou ao fim da lista (tail); o número -2 refere-se ao segundo item adicionado à lista e assim por diante. Seguindo com o nosso exemplo, vamos utilizar esse comando para

obter as três últimas páginas visitadas:

String chave = "ultimas_paginas_visitadas";

Jedis jedis = new Jedis("localhost");

List<String> paginas = jedis.lrange(chave, 0, 2);

System.out.println("As 3 ultimas paginas visitadas são:");

for (String pagina : paginas) {

System.out.println(pagina);

}

O resultado do código anterior é:

As 3 ultimas paginas visitadas são:

/armazenando-dados-no-redis

/todos-os-posts

/sobre-mim

Com isso, temos a primeira parte do nosso exemplo funcionando e já po-

demos exibir as três últimas páginas visualizadas no nosso blog Tudo Sobre

Redis. Mas se pensarmos um pouco nessa solução, veremos que ela tem um

problema, porque o blog irá armazenar uma grande quantidade de itens (pá-

ginas visitadas) na lista, porém sempre irá exibir apenas três itens.

Com o conhecimento sobre esse problema, vemos que é desnecessário

manter armazenadas todas as páginas acessadas. Dessa forma, começamos a

segunda parte do nosso exemplo, que é limitar a quantidade de itens inseridos na nossa lista.

52

Casa do Código

Capítulo 5. Redis no mundo real Parte 3

Vamos utilizar o comando LTRIM para restringirmos a quantidade de

páginas acessadas. Com ele, podemos definir através de um índice inicial e

outro final um range que será mantido na lista e todos os registros restantes serão removidos dela. Os índices utilizados no comando LTRIM funcionam

da mesma forma que os utilizado no comando LRANGE.

Para mantermos as três ultimas páginas adicionadas à nossa lista, temos

que passar o índice 0 como posição inicial e o índice 2 (índices no Redis iniciam na posição 0) como posição final. Veja a seguir como fazer isso em Java: String chave = "ultimas_paginas_visitadas";

Jedis jedis = new Jedis("localhost");

String resultado = jedis.ltrim(chave, 0, 2);

System.out.println(String.format("Resultado: %s", resultado));

O código anterior imprime o resultado:

Resultado: OK

Para validarmos que nossa lista agora contém apenas três páginas, vamos

executar novamente o comando LLEN:

redis 127.0.0.1:6379> LLEN ultimas_paginas_visitadas

(integer) 3

Pronto, agora sempre que uma página for visitada e a adicionarmos no

Redis, basta em seguida executar o comando LTRIM para remover os regis-

tros desnecessários.

Exercícios sobre listas

1) O comando LINDEX retorna o valor de um item da lista de acordo com

o índice informado. Utilize-o para ver qual é a primeira e a última página

da lista ultimas_paginas_visitadas;

2) O comando LREM remove um ou mais elementos de uma lista associ-

ada a uma chave. Utilize-o para remover todos os elementos da lista

ultimas_paginas_visitadas de uma única vez.

53

5.2. Criando uma fila de mensagens

Casa do Código

Referência rápida de comandos para listas

LPUSH chave valor [valor ...] adiciona um ou mais valo-

res ao topo (head) da lista definida pela chave;

LLEN chave retorna a quantidade de itens armazenados em uma

lista;

LRANGE chave inicio fim retorna um range de itens armaze-

nados em uma lista, os valores inicio e fim são índices iniciados em

0;

LTRIM chave inicio fim apara a lista deixando apenas os itens

definidos entre os índices de inicio e fim.

5.2

Criando uma fila de mensagens

Neste próximo exemplo vamos ver como utilizar os Redis para gerenciar uma

fila de mensagens. Isso é muito útil quando precisamos executar tarefas em

background ou enviar e receber mensagens entre aplicações de forma assín-

crona. O Redis é muito utilizado para armazenar filas de mensagens, tanto

que originou várias ferramentas que utilizam o Redis para esta finalidade.

Algumas das mais populares são:

Resque https://github.com/resque/resque

RestMQ http://restmq.com/

RQ http://python-rq.org/

Sidekiq http://sidekiq.org/

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

0
Шрифт
Фон

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