BT

Novo Spring Data Redis 1.0.0 da SpringSource: mais facilidade e abstração

por Kostis Kapelonis , traduzido por Rafael Sakurai em 17 Jan 2012 |

A SpringSource liberou a primeira versão estável de uma biblioteca open source que facilita a integração do Redis com aplicações Java, oferecendo uma API unificada e mais fácil de usar para serialização de objetos em aplicações baseadas no Spring.

O Redis é um repositório chave-valor, apoiado pela VMWare e usado por sites de grande porte como GitHub e StackOverflow. É uma base de dados NoSQL que foca em simplicidade e performance (os dados são todos mantidos em memória), sendo acessado através de um conjunto amplo de comandos. Diferentemente de vários outros repositórios chave-valor, suporta tipos de dados adicionais (além de strings). Veja alguns exemplos simples de comandos:

set my-news-site INFOQ
=>OK
get my-news-site
=>"INFOQ"
set my-counter 22
=>OK
get my-counter 
=>"22"
incr my-counter 
=>(integer) 23
get my-counter
=>"23"

O Redis vem com clientes para diversas linguagens de programação, incluindo Haskell, Tcl, Go e SmallTalk, além de C# e Java. Para integração com Java, há as bibliotecas Jedis, JRedis, JDBC Redis e RJC;

O Spring Data Redis é parte do projeto "guardachuva" Spring Data que tem como objetivo promover o uso de banco de dados não relacionais em ambientes Spring (como já feito para JPA/Hibernate). Seus maiores objetivos são portabilidade e consistência em aplicações Java baseadas em Spring. Em seu nível mais baixo, o Spring Data Redis fornece uma abstração básica das bibliotecas clientes de Redis em Java. Com isso, desenvolvedores podem focar na API unificada do Spring Redis e facilmente alternar entre as diferentes implementações (por motivo de performance, por exemplo).

É oferecida a RedisConnection, uma abstração para uma conexão rápida (mas não thread-safe) de uma instância do Redis (similar ao EntityManager do JPA ou 0 Session do Hibernate) e o RedisConnectionFactory que cria as conexões (similar o EntityManagerFactory do JPA ou o SessionFactory do Hibernate). Estas abstrações ocultam o mecanismo de implementação atual com uma interface de programação comum, facilitando a portabilidade entre bibliotecas clientes do Redis em Java.

O RedisConnection oferece todos os comandos do Redis, mas com a sintaxe do Java. Todo o poder do Redis pode ser acessado através desta interface, usando comandos de baixo nível para salvar ou atualizar as chaves.

O exemplo a seguir pode ser escrito usando os métodos Java set, get e incr fornecidos em RedisConnection. Os comandos são os mesmos, independentemente da biblioteca Java utilizada. A troca entre as diferentes implementações fica isolada em uma única linha de configuração, no contexto do Spring:

<!-- Jedis ConnectionFactory -->
<bean class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"/>  

<!-- JRedis ConnectionFactory -->  
<bean class="org.springframework.data.redis.connection.jredis.JredisConnectionFactory"/>

<!-- RJC ConnectionFactory -->
<bean class="org.springframework.data.redis.connection.rjc.RjcConnectionFactory"/> 

Em um nível mais alto de abstração, o Spring Data Redis oferece o RedisTemplate, que pode ser usado para armazenar objetos Java inteiros diretamente em uma instância do Redis, ao invés de apenas tipos básicos (ex.: strings e números). Numa instalação padrão do Redis, a serialização pode ser feita através de serialização do JDK (a forma padrão), usando toString(), JSON (com a biblioteca Jackson) e XML (com o módulo OXM do Spring).

Para mais informações, veja um video introdutório (em inglês), que abrange ambos o Redis e o Spring Data Redis, a documentação de referência e os Javadocs. O código-fonte está disponível no GitHub.

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber menssagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber menssagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber menssagens dessa discussão

Dê sua opinião

Conteúdo educacional

Feedback geral
Bugs
Publicidade
Editorial
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2013 C4Media Inc.
Política de privacidade
BT