Spring Data Redis

Spring Data Redis, part of the larger Spring Data family, provides easy configuration and access to Redis from Spring applications. It offers both low-level and high-level abstractions for interacting with the store, freeing the user from infrastructural concerns.

Quick Start
Fork me on GitHub


  • Connection package as low-level abstraction across multiple Redis drivers/connectors (Lettuce and Jedis).
  • Exception translation to Spring’s portable Data Access exception hierarchy for Redis driver exceptions
  • RedisTemplate that provides a high level abstraction for performing various Redis operations, exception translation and serialization support
  • Pubsub support (such as a MessageListenerContainer for message-driven POJOs)
  • Redis Sentinel and Redis Cluster support
  • JDK, String, JSON and Spring Object/XML mapping serializers
  • JDK Collection implementations on top of Redis
  • Atomic counter support classes
  • Sorting and Pipelining functionality
  • Dedicated support for SORT, SORT/GET pattern and returned bulk values
  • Redis implementation for Spring 3.1 cache abstraction
  • Automatic implementation of Repository interfaces including support for custom finder methods using @EnableRedisRepositories
  • CDI support for repositories

Quick Start


The recommended way to get started using spring-data-redis in your project is with a dependency management system – the snippet below can be copied and pasted into your build. Need help? See our getting started guides on building with Maven and Gradle.

Configure RedisTemplate….

<bean id="jedisConnFactory" 

<!-- redis template definition -->
<bean id="redisTemplate" 

Inject and use RedisTemplate or any of its opsForX() instances….

public class Example {

    // inject the actual template
    private RedisTemplate<String, String> template;

    // inject the template as ListOperations
    // can also inject as Value, Set, ZSet, and HashOperations
    private ListOperations<String, String> listOps;

    public void addLink(String userId, URL url) {
        listOps.leftPush(userId, url.toExternalForm());
        // or use template directly

Sample Projects

Getting Started Guides