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.

Avalie esse artigo

Relevância
Estilo/Redação

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 mensagens dessa discussão
Comentários da comunidade

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

Receber mensagens dessa discussão

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

Receber mensagens dessa discussão

Dê sua opinião
Feedback geral
Bugs
Publicidade
Editorial
Marketing
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2016 C4Media Inc.
Política de privacidade
BT

We notice you’re using an ad blocker

We understand why you use ad blockers. However to keep InfoQ free we need your support. InfoQ will not provide your data to third parties without individual opt-in consent. We only work with advertisers relevant to our readers. Please consider whitelisting us.