Posted by Wellington Maeda On April - 16 - 2014 0 Comment

redis

Olá a Todos .

Hoje vou falar um pouco do Redis .

Definição

O Redis (Remote Dictionary Server) é uma API de persistência de dados NoSQL que faz armazenamento dessas estruturas de dados em memória, logicamente que ele guarda essas informações em disco, mas trabalha com elas em memória e faz o acesso ao disco de forma assíncrona tornado a API muito rápida. Dessa forma ela se tornou uma potente ferramenta de cache disponível no mercado. O Redis é uma API feita em C dai a sua eficiência e trabalha muito bem com os dados em memória diferente de API's feitas em Java devido a deficiente alocação de memória da JVM.

Ele suporta desde estruturas de dados simples como MAP até mais complexas como Lists, Sets, Hashes e Sorted Sets.

Redis e Memcached


O memcached também é uma API que armazena os seus dados em memória porém tem algumas limitações, incluindo o fato de que todos os seus valores são cadeias de caractere simples. O Redis, como alternativa ao memcached, suporta um conjunto mais variado de recursos. Algumas referências também indicam que o Redis é muito mais rápido do que o memcached. Os variados tipos de dados do Redis permite que armazenar dados de maneira muito mais sofisticada na memória do que se pode fazer com o memcached. E, ao contrário do memcached, o Redis consegue persistir seus dados.

Persistência


Como dito acima p Redis permite persistência transacional diferente do Memcached, assim podemos realizar operações com o uso de transações efetuando commit ou rollback nas suas persistências.

Segurança dos dados

O Redis trabalha em cluster sendo que você pode configurar N nós na mesma maquina ou em máquinas diferentes tendo um nó como master e outros como slave. Caso um nó master tenha problema ele vai pegar informações do slave. Você pode também caso perca um nó master promover um nó slave para master .

Time Out do Cache

Como foi dito o Redis trabalha com os dados em memória dessa forma é sempre uma boa ideia configurar um time out para os dados carregado. Expirando esse tempo de time out os dados somem da memoria do Redis e posteriormente são apagados do disco. Isso funciona também quando se esta trabalhando em cluster deletando os dados expirados do master e posteriormente dos salves .Vamos ver mais para frente como trabalhar melhor com esse time out.

Antes de iniciar com a ferramenta, vamos a um conceito importante quando falamos de cache.

Quando é bom utilizar cache ?

Antes de utilizar uma solução de cache para sua aplicação é importante levar em consideração alguns pontos, como por exemplo o quanto custará para a sua memória esse cache .

O Redis mantém os seus dados cacheados em memória por tando temos que fazer uma análise em cima disso. Como no exemplo abaixo:

O total de numero de CEP's na base dos correios na minha base é de aproximadamente 400.000 registros , fazendo um teste com esses dados no Redis temos um uso de 200 MB de memória RAM.

Conclusão que para esse caso vale muito a pena usar o cache pois tenho pouco consumo de memória comparado a quantidade dos meus dados. Os meus dados são pouco alterados pois os CEP's não mudam constantemente e tenho um tipo de dado chave para a minha operação, vamos supor que em um portal de ecomerce realizando uma venda, caso a busca de CEP esteja fora minha venda não será realizada causando uma perda para minha empresa, então nesse cenário faz todo sentido o uso do cache.

Entendido isso vamos a mão na massa .

Instalação

Fazer o download da ultima versão : http://redis.io/download
Com o arquivo redis-2.8.8.tar.gz baixado.

Antes de instalar é necessário instalar a seguintes libs :

$ sudo apt-get install build-essential automake tcl8.5-dev

$ tar xzf redis-2.8.8.tar.gz
$ cd redis-2.8.8/
$ make
$ sudo make install

Caso tenha um erro do tipo

zmalloc.h:51:31: error: jemalloc/jemalloc.h: No such file or directory

Rodar o comando abaixo antes de instalar .

$ make distclean
$ sudo make install

Iniciando o Server

$ redis-server & (rodando em background)

_._
_.-``__ ''-._
_.-`` `. `_. ''-._                                                 Redis 2.8.8 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, )                                                     Running in stand alone mode
|`-._`-...-` __...-.``-._|'` _.-'|                              Port: 6379
| `-._ `._ / _.-' |                                                PID: 23097
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |                                              http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'

Iniciando o client

$ redis-cli

Comandos

O redis tem uma série de comandos que pode ser encontrados em :http://redis.io/commands

Integração com aplicações clientes

Até agora falamos do Redis Server, no próximo post vou falar da integração da sua aplicação com ele.O Redis possui clients em Java, .NET, Ruby, Python. Essas API's são bem simples de programar e integrar com o Redis para cachear e administrar o seu cache.Também faremos um comparativo de tempo para saber o ganho de usar o cache.

Até mais !

Wellington Maeda

 

About the author

Wellington Maeda

Desenvolvedor Java certificado OCJP e arquiteto de sistemas Java e SOA. Entusiasta de tecnologias emergentes e Open Sources, seus interesses envolvem SOA , sistemas distribuídos de alta performance.

Be Sociable, Share!

Protected by WP Anti Spam