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

Шрифт
Фон

(integer) 1

127.0.0.1:6379> GETBIT acessos_dias_01_ou_02 20

(integer) 1

127.0.0.1:6379> GETBIT acessos_dias_01_ou_02 30

45

4.3. Estatísticas de usuários únicos por data

Casa do Código

(integer) 1

127.0.0.1:6379> GETBIT acessos_dias_01_ou_02 40

(integer) 1

No bloco anterior, o comando BITCOUNT retornou a quantidade de

valores armazenados na chave com o resultado da operação que usou o

operador

OR, que no nosso exemplo são 4.

Em seguida, executamos

o comando

GETBIT para cada valor existente em ambas as chaves (

acesso:01/01/2014 e acesso:02/01/2014) para confirmar que todos

os valores estão com o bit definido como 1.

O comando BITOP e seus operadores

O comando BITOP suporta quatro operadores lógicos:

AND, OR,

XOR e NOT. Os operadores AND, OR e XOR são executados todos da

mesma forma: em outras palavras, você informa uma chave que irá re-

ceber o resultado da operações seguida pelas chaves que serão utilizadas

na operação.

Já o operador NOT é executado utilizando apenas uma chave para re-

ceber os valores do resultado e uma chave com os valores que serão utili-

zados na operação. De forma resumida, o operador NOT apenas inverte

os bits dos valores (offsets).

Exercícios sobre Bitmaps

1) Utilize o comando

BITOP com o operador

XOR entre as chaves

acesso:01/01/2014 e acesso:02/01/2014 e armazene o resultado

em uma chave chamada acessos_dias_01_xor_02;

2) Utilize o comando

BITOP

com o operador

NOT

na chave

acesso:03/01/2014 e armazene o seu resultado em uma chave

chamada acessos_dia_04_not.

46

Casa do Código

Capítulo 4. Redis no mundo

real Parte 2

Referência rápida de comandos para Bitmaps

BITCOUNT chave retorna a quantidade de bits definidos em uma

chave;

BITOP operador chave-resultado chave [chave...]

realiza uma operação lógica entre diversas chaves e armazena seu

resultado em uma chave definida;

GETBIT chave offset retorna o valor do bit de um offset arma-

zenado em uma chave;

SETBIT chave offset valor define o valor do bit de um offset

de uma chave.

4.4

Próximos passos

Nesta segunda parte, nós aprendemos a como incrementar e decrementar va-

lores numéricos armazenados no Redis e também como aplicar um tempo de

expiração para as chaves armazenadas. Além disso, também conhecemos um

poderoso recurso chamado Redis Bitmaps e aprendemos a utilizá-lo em um

cenário real.

No próximo capítulo, vamos continuar com a terceira parte dos exem-

plos práticos, com mais comandos novos e com dois novos tipos de dados

suportados pelo Redis, o List e o Set.

47

Capítulo 5

Redis no mundo real Parte 3

5.1

Lista das últimas páginas visitadas

Dados do tipo list (ou lista) no Redis são basicamente listas de strings ordenadas pela ordem de inserção de cada item. O Redis possibilita que um novo

item da lista possa ser inserido tanto no início (head) da lista como no seu final (tail), utilizando os comandos LPUSH e RPUSH respectivamente. O tamanho máximo de elementos contidos em uma única lista é de mais de quatro

bilhões de elementos ou, sendo mais preciso, 4294967295 elementos. Veja a

seguir 5.1 uma ilustração do tipo de dado List:

5.1. Lista das últimas páginas visitadas

Casa do Código

Figura 5.1: Tipo de dado List

Agora que tivemos uma rápida introdução sobre o tipo de dado list, va-

mos criar um exemplo de uso utilizando um recurso muito útil e simples de

implementar com o Redis: exibir os últimos elementos adicionados a uma

lista. Mas para tornar o exemplo mais real vamos exibir as últimas páginas

visitadas do blog fictício chamado Tudo Sobre Redis, que conhecemos na se-

ção 4.2. Esse conceito pode, inclusive, ser aplicado ou adaptado em outros

contextos, como para exibir os últimos itens visitados em uma loja virtual ou as últimas mensagens de um perfil em uma rede social.

Como exemplos para as últimas páginas visitadas do nosso blog, vamos

rever as páginas que usamos no exemplo anterior da seção 4.2:

/inicio

/contato

/sobre-mim

/todos-os-posts

/armazenando-dados-no-redis

Note que as páginas serão inseridas em uma lista no Redis seguindo esta

mesma ordem, que refere-se à ordem na qual elas foram acessadas, sendo

que o primeiro elemento /inicio corresponde à primeira página acessada e

50

Casa do Código

Capítulo 5. Redis no mundo real Parte 3

assim sucessivamente. Para armazená-las, vamos utilizar o comando LPUSH,

que insere um novo item ao topo (head) da lista e aceita um ou mais elementos para que sejam armazenados em uma lista. Vejamos o exemplo em Java do

seu uso:

String chave = "ultimas_paginas_visitadas";

String[] paginasVisitadas = {

"/inicio",

"/contato",

"/sobre-mim",

"/todos-os-posts",

"/armazenando-dados-no-redis"

};

Jedis jedis = new Jedis("localhost");

Long resultado = jedis.lpush(chave, paginasVisitadas);

System.out.println(

String.format(

"A lista %s contém %d elementos", chave, resultado

)

);

A

lista

utilizada

nesse

exemplo

chama-se

ultimas_paginas_visitadas.

Para o nosso caso, enviamos todas

as páginas para o Redis de uma única vez, mas em aplicações reais, isso seria feito a cada página, conforme elas fossem visitadas.

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

0
Шрифт
Фон

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