Redis Spring data with Lettuce: com.lambdaworks.redis.RedisCommandExecutionException: MOVED error












1














I'm using AWS ElastiCache (Redis) in cluster mode. I'm having two implementations to connect to ElastiCache. One of the implementations is directly using the native Lettuce driver and other using Spring data with Lettuce as underneath driver. AWS ElastiCache has Cluster configuration endpoint. I want to use this endpoint to connect to ElastiCache. I'm able to successfully connect to ElastiCache using cluster endpoint with native Lettuce driver implementation but getting below error when using spring data with cluster endpoint



Spring data: 1.8.9-RELEASE (Using a higher version of Spring is not an option)



Lettuce: 4.5.0-FINAL



@Bean
public LettuceConnectionFactory redisConnectionFactory() {
LettuceConnectionFactory lettuceConnectionFactory = new LettuceConnectionFactory();
lettuceConnectionFactory.setHostName(<cluster_endpoint>);
lettuceConnectionFactory.setPort();
lettuceConnectionFactory.setUseSsl(Boolean.valueOf(useSsl));
//lettuceConnectionFactory.setPassword(password);
return lettuceConnectionFactory;
}


Error:



Caused by: org.springframework.data.redis.RedisSystemException: Error in execution; nested exception is com.lambdaworks.redis.RedisCommandExecutionException: MOVED 12894 cache---.usw2.cache.amazonaws.com:6379
at org.springframework.data.redis.connection.lettuce.LettuceExceptionConverter.convert(LettuceExceptionConverter.java:50)
at org.springframework.data.redis.connection.lettuce.LettuceExceptionConverter.convert(LettuceExceptionConverter.java:48)
at org.springframework.data.redis.connection.lettuce.LettuceExceptionConverter.convert(LettuceExceptionConverter.java:41)


It works fine in below two scenarios -

1) I use cluster node endpoints and inject in LettuceConnectionFactory via RedisClusterConfiguration.

2) If I use Lettuce as direct implementation (not through Spring data) using StatefulRedisClusterConnection.



What could be the reason for the above two errors? I would prefer to use Lettuce with Spring data by using cluster configuration endpoint.










share|improve this question
























  • I have the exact same problem!
    – javapapo
    Nov 25 at 21:21
















1














I'm using AWS ElastiCache (Redis) in cluster mode. I'm having two implementations to connect to ElastiCache. One of the implementations is directly using the native Lettuce driver and other using Spring data with Lettuce as underneath driver. AWS ElastiCache has Cluster configuration endpoint. I want to use this endpoint to connect to ElastiCache. I'm able to successfully connect to ElastiCache using cluster endpoint with native Lettuce driver implementation but getting below error when using spring data with cluster endpoint



Spring data: 1.8.9-RELEASE (Using a higher version of Spring is not an option)



Lettuce: 4.5.0-FINAL



@Bean
public LettuceConnectionFactory redisConnectionFactory() {
LettuceConnectionFactory lettuceConnectionFactory = new LettuceConnectionFactory();
lettuceConnectionFactory.setHostName(<cluster_endpoint>);
lettuceConnectionFactory.setPort();
lettuceConnectionFactory.setUseSsl(Boolean.valueOf(useSsl));
//lettuceConnectionFactory.setPassword(password);
return lettuceConnectionFactory;
}


Error:



Caused by: org.springframework.data.redis.RedisSystemException: Error in execution; nested exception is com.lambdaworks.redis.RedisCommandExecutionException: MOVED 12894 cache---.usw2.cache.amazonaws.com:6379
at org.springframework.data.redis.connection.lettuce.LettuceExceptionConverter.convert(LettuceExceptionConverter.java:50)
at org.springframework.data.redis.connection.lettuce.LettuceExceptionConverter.convert(LettuceExceptionConverter.java:48)
at org.springframework.data.redis.connection.lettuce.LettuceExceptionConverter.convert(LettuceExceptionConverter.java:41)


It works fine in below two scenarios -

1) I use cluster node endpoints and inject in LettuceConnectionFactory via RedisClusterConfiguration.

2) If I use Lettuce as direct implementation (not through Spring data) using StatefulRedisClusterConnection.



What could be the reason for the above two errors? I would prefer to use Lettuce with Spring data by using cluster configuration endpoint.










share|improve this question
























  • I have the exact same problem!
    – javapapo
    Nov 25 at 21:21














1












1








1







I'm using AWS ElastiCache (Redis) in cluster mode. I'm having two implementations to connect to ElastiCache. One of the implementations is directly using the native Lettuce driver and other using Spring data with Lettuce as underneath driver. AWS ElastiCache has Cluster configuration endpoint. I want to use this endpoint to connect to ElastiCache. I'm able to successfully connect to ElastiCache using cluster endpoint with native Lettuce driver implementation but getting below error when using spring data with cluster endpoint



Spring data: 1.8.9-RELEASE (Using a higher version of Spring is not an option)



Lettuce: 4.5.0-FINAL



@Bean
public LettuceConnectionFactory redisConnectionFactory() {
LettuceConnectionFactory lettuceConnectionFactory = new LettuceConnectionFactory();
lettuceConnectionFactory.setHostName(<cluster_endpoint>);
lettuceConnectionFactory.setPort();
lettuceConnectionFactory.setUseSsl(Boolean.valueOf(useSsl));
//lettuceConnectionFactory.setPassword(password);
return lettuceConnectionFactory;
}


Error:



Caused by: org.springframework.data.redis.RedisSystemException: Error in execution; nested exception is com.lambdaworks.redis.RedisCommandExecutionException: MOVED 12894 cache---.usw2.cache.amazonaws.com:6379
at org.springframework.data.redis.connection.lettuce.LettuceExceptionConverter.convert(LettuceExceptionConverter.java:50)
at org.springframework.data.redis.connection.lettuce.LettuceExceptionConverter.convert(LettuceExceptionConverter.java:48)
at org.springframework.data.redis.connection.lettuce.LettuceExceptionConverter.convert(LettuceExceptionConverter.java:41)


It works fine in below two scenarios -

1) I use cluster node endpoints and inject in LettuceConnectionFactory via RedisClusterConfiguration.

2) If I use Lettuce as direct implementation (not through Spring data) using StatefulRedisClusterConnection.



What could be the reason for the above two errors? I would prefer to use Lettuce with Spring data by using cluster configuration endpoint.










share|improve this question















I'm using AWS ElastiCache (Redis) in cluster mode. I'm having two implementations to connect to ElastiCache. One of the implementations is directly using the native Lettuce driver and other using Spring data with Lettuce as underneath driver. AWS ElastiCache has Cluster configuration endpoint. I want to use this endpoint to connect to ElastiCache. I'm able to successfully connect to ElastiCache using cluster endpoint with native Lettuce driver implementation but getting below error when using spring data with cluster endpoint



Spring data: 1.8.9-RELEASE (Using a higher version of Spring is not an option)



Lettuce: 4.5.0-FINAL



@Bean
public LettuceConnectionFactory redisConnectionFactory() {
LettuceConnectionFactory lettuceConnectionFactory = new LettuceConnectionFactory();
lettuceConnectionFactory.setHostName(<cluster_endpoint>);
lettuceConnectionFactory.setPort();
lettuceConnectionFactory.setUseSsl(Boolean.valueOf(useSsl));
//lettuceConnectionFactory.setPassword(password);
return lettuceConnectionFactory;
}


Error:



Caused by: org.springframework.data.redis.RedisSystemException: Error in execution; nested exception is com.lambdaworks.redis.RedisCommandExecutionException: MOVED 12894 cache---.usw2.cache.amazonaws.com:6379
at org.springframework.data.redis.connection.lettuce.LettuceExceptionConverter.convert(LettuceExceptionConverter.java:50)
at org.springframework.data.redis.connection.lettuce.LettuceExceptionConverter.convert(LettuceExceptionConverter.java:48)
at org.springframework.data.redis.connection.lettuce.LettuceExceptionConverter.convert(LettuceExceptionConverter.java:41)


It works fine in below two scenarios -

1) I use cluster node endpoints and inject in LettuceConnectionFactory via RedisClusterConfiguration.

2) If I use Lettuce as direct implementation (not through Spring data) using StatefulRedisClusterConnection.



What could be the reason for the above two errors? I would prefer to use Lettuce with Spring data by using cluster configuration endpoint.







spring-data amazon-elasticache spring-data-redis lettuce






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 27 at 6:31

























asked Nov 20 at 22:07









Pankaj

1,42583065




1,42583065












  • I have the exact same problem!
    – javapapo
    Nov 25 at 21:21


















  • I have the exact same problem!
    – javapapo
    Nov 25 at 21:21
















I have the exact same problem!
– javapapo
Nov 25 at 21:21




I have the exact same problem!
– javapapo
Nov 25 at 21:21












1 Answer
1






active

oldest

votes


















0














Below is the solution for connecting to Elasticache Redis cluster using Spring Data -



Using ElastiCache Cluster Configuration Endpoint:



@Bean
public RedisClusterConfiguration redisClusterConfiguration() {
RedisClusterConfiguration clusterConfiguration = new
RedisClusterConfiguration();
clusterConfiguration.clusterNode("host", port);
new LettuceConnectionFactory(clusterConfiguration);


}



Using ElastiCache Node endpoints:



@Bean
public RedisClusterConfiguration redisClusterConfiguration() {
RedisClusterConfiguration clusterConfiguration = new RedisClusterConfiguration()
.clusterNode("redis-cluster----0001-001.redis-cluster---.usw2.cache.amazonaws.com",6379)
.clusterNode("redis-cluster----0001-002.redis-cluster---.usw2.cache.amazonaws.com",6379)
.clusterNode("redis-cluster----0001-003.redis-cluster---.usw2.cache.amazonaws.com",6379)
.clusterNode("redis-cluster----0001-004.redis-cluster---.usw2.cache.amazonaws.com",6379);
return clusterConfiguration;
}


Thanks to Mark Paluch who responded to my issue in Spring Data forum.
Here is the detail - https://jira.spring.io/browse/DATAREDIS-898






share|improve this answer





















    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53402326%2fredis-spring-data-with-lettuce-com-lambdaworks-redis-rediscommandexecutionexcep%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    0














    Below is the solution for connecting to Elasticache Redis cluster using Spring Data -



    Using ElastiCache Cluster Configuration Endpoint:



    @Bean
    public RedisClusterConfiguration redisClusterConfiguration() {
    RedisClusterConfiguration clusterConfiguration = new
    RedisClusterConfiguration();
    clusterConfiguration.clusterNode("host", port);
    new LettuceConnectionFactory(clusterConfiguration);


    }



    Using ElastiCache Node endpoints:



    @Bean
    public RedisClusterConfiguration redisClusterConfiguration() {
    RedisClusterConfiguration clusterConfiguration = new RedisClusterConfiguration()
    .clusterNode("redis-cluster----0001-001.redis-cluster---.usw2.cache.amazonaws.com",6379)
    .clusterNode("redis-cluster----0001-002.redis-cluster---.usw2.cache.amazonaws.com",6379)
    .clusterNode("redis-cluster----0001-003.redis-cluster---.usw2.cache.amazonaws.com",6379)
    .clusterNode("redis-cluster----0001-004.redis-cluster---.usw2.cache.amazonaws.com",6379);
    return clusterConfiguration;
    }


    Thanks to Mark Paluch who responded to my issue in Spring Data forum.
    Here is the detail - https://jira.spring.io/browse/DATAREDIS-898






    share|improve this answer


























      0














      Below is the solution for connecting to Elasticache Redis cluster using Spring Data -



      Using ElastiCache Cluster Configuration Endpoint:



      @Bean
      public RedisClusterConfiguration redisClusterConfiguration() {
      RedisClusterConfiguration clusterConfiguration = new
      RedisClusterConfiguration();
      clusterConfiguration.clusterNode("host", port);
      new LettuceConnectionFactory(clusterConfiguration);


      }



      Using ElastiCache Node endpoints:



      @Bean
      public RedisClusterConfiguration redisClusterConfiguration() {
      RedisClusterConfiguration clusterConfiguration = new RedisClusterConfiguration()
      .clusterNode("redis-cluster----0001-001.redis-cluster---.usw2.cache.amazonaws.com",6379)
      .clusterNode("redis-cluster----0001-002.redis-cluster---.usw2.cache.amazonaws.com",6379)
      .clusterNode("redis-cluster----0001-003.redis-cluster---.usw2.cache.amazonaws.com",6379)
      .clusterNode("redis-cluster----0001-004.redis-cluster---.usw2.cache.amazonaws.com",6379);
      return clusterConfiguration;
      }


      Thanks to Mark Paluch who responded to my issue in Spring Data forum.
      Here is the detail - https://jira.spring.io/browse/DATAREDIS-898






      share|improve this answer
























        0












        0








        0






        Below is the solution for connecting to Elasticache Redis cluster using Spring Data -



        Using ElastiCache Cluster Configuration Endpoint:



        @Bean
        public RedisClusterConfiguration redisClusterConfiguration() {
        RedisClusterConfiguration clusterConfiguration = new
        RedisClusterConfiguration();
        clusterConfiguration.clusterNode("host", port);
        new LettuceConnectionFactory(clusterConfiguration);


        }



        Using ElastiCache Node endpoints:



        @Bean
        public RedisClusterConfiguration redisClusterConfiguration() {
        RedisClusterConfiguration clusterConfiguration = new RedisClusterConfiguration()
        .clusterNode("redis-cluster----0001-001.redis-cluster---.usw2.cache.amazonaws.com",6379)
        .clusterNode("redis-cluster----0001-002.redis-cluster---.usw2.cache.amazonaws.com",6379)
        .clusterNode("redis-cluster----0001-003.redis-cluster---.usw2.cache.amazonaws.com",6379)
        .clusterNode("redis-cluster----0001-004.redis-cluster---.usw2.cache.amazonaws.com",6379);
        return clusterConfiguration;
        }


        Thanks to Mark Paluch who responded to my issue in Spring Data forum.
        Here is the detail - https://jira.spring.io/browse/DATAREDIS-898






        share|improve this answer












        Below is the solution for connecting to Elasticache Redis cluster using Spring Data -



        Using ElastiCache Cluster Configuration Endpoint:



        @Bean
        public RedisClusterConfiguration redisClusterConfiguration() {
        RedisClusterConfiguration clusterConfiguration = new
        RedisClusterConfiguration();
        clusterConfiguration.clusterNode("host", port);
        new LettuceConnectionFactory(clusterConfiguration);


        }



        Using ElastiCache Node endpoints:



        @Bean
        public RedisClusterConfiguration redisClusterConfiguration() {
        RedisClusterConfiguration clusterConfiguration = new RedisClusterConfiguration()
        .clusterNode("redis-cluster----0001-001.redis-cluster---.usw2.cache.amazonaws.com",6379)
        .clusterNode("redis-cluster----0001-002.redis-cluster---.usw2.cache.amazonaws.com",6379)
        .clusterNode("redis-cluster----0001-003.redis-cluster---.usw2.cache.amazonaws.com",6379)
        .clusterNode("redis-cluster----0001-004.redis-cluster---.usw2.cache.amazonaws.com",6379);
        return clusterConfiguration;
        }


        Thanks to Mark Paluch who responded to my issue in Spring Data forum.
        Here is the detail - https://jira.spring.io/browse/DATAREDIS-898







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Dec 1 at 17:27









        Pankaj

        1,42583065




        1,42583065






























            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.





            Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


            Please pay close attention to the following guidance:


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53402326%2fredis-spring-data-with-lettuce-com-lambdaworks-redis-rediscommandexecutionexcep%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Wiesbaden

            To store a contact into the json file from server.js file using a class in NodeJS

            Marschland