Redis (Remote Dictionary Server) - Parte 1 - Tech Busters : Tech Busters
Redis (Remote Dictionary Server) - Parte 1
Posted by Wellington Maeda On April - 16 - 2014 0 Comment
Hoje vou falar um pouco do Redis .
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.
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.
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.
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 .
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/
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 .
$ redis-server & (rodando em background)
_.-`` `. `_. ''-._ Redis 2.8.8 (00000000/0) 64 bit
| `-._ `._ / _.-' | PID: 23097
Iniciando o client
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.
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.