Quantcast
Channel: Active questions tagged redis+java - Stack Overflow
Viewing all articles
Browse latest Browse all 2204

Unable to connect to Redis | Spring Boot

$
0
0

I've a redis service on upstash.io but not able to connect to it from my spring boot application

This is my redis config

@Configurationpublic class RedisConfig {    @Bean    public LettuceConnectionFactory redisConnectionFactory() {        RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration();        redisStandaloneConfiguration.setHostName("myhost");        redisStandaloneConfiguration.setPort(6379);        redisStandaloneConfiguration.setPassword(RedisPassword.of("password")); // Uncomment if password is needed        return new LettuceConnectionFactory(redisStandaloneConfiguration);    }     @Bean    public RedisTemplate<Object, Object> redisTemplate() {        RedisTemplate<Object, Object> template = new RedisTemplate<>();        template.setConnectionFactory(redisConnectionFactory());        template.setKeySerializer(new StringRedisSerializer());        template.setValueSerializer(new StringRedisSerializer());        return template;    }} 

This is my redis service

@Component @RequiredArgsConstructor public class RedisService {     @Autowired    private final RedisTemplate<Object, Object> redisTemplate;     @PostConstruct    public void testConnection() {        try {            redisTemplate.getConnectionFactory().getConnection().ping();            System.out.println("Connected to Redis successfully");        } catch (Exception e) {            System.err.println("Unable to connect to Redis: " + e.getMessage());        }    }    public <V> void set(String key, V value, long timeout, TimeUnit timeUnit) {         System.out.println("Storing message to redis cache: Key[" + key +"]");        redisTemplate.opsForValue().set(key, value);         redisTemplate.expire(key, timeout, timeUnit);     }     public <V> V get(String key) {         return (V) redisTemplate.opsForValue().get(key);     }     public Boolean hasKey(String key) {         return redisTemplate.hasKey(key);     } } 

This is my pom.xml

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.0.6</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.springprojects</groupId><artifactId>realtimechatapp</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>realtimechatapp</name><description>Chat Application using Spring Boot</description><properties><java.version>17</java.version><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId>javax.persistence</groupId><artifactId>javax.persistence-api</artifactId><version>2.2</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependency><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId><scope>provided</scope></dependency><dependency><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-jasper</artifactId><version>10.1.18</version><scope>provided</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId></dependency><dependency><groupId>org.thymeleaf.extras</groupId><artifactId>thymeleaf-extras-springsecurity6</artifactId></dependency><dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</artifactId></dependency><!-- https://mvnrepository.com/artifact/com.google.code.gson/gson --><dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId></dependency><dependency><groupId>io.lettuce</groupId><artifactId>lettuce-core</artifactId></dependency><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> </dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><image><builder>paketobuildpacks/builder-jammy-base:latest</builder></image><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins><resources><resource><directory>src/main/resources</directory><filtering>true</filtering></resource></resources></build></project>

Logs:

Caused by: io.lettuce.core.RedisConnectionException: Connection closed prematurely

I've tried to increas the timeout but did not work.

Connecting with redis on local also give same errorredisStandaloneConfiguration.setHostName("localhost");redisStandaloneConfiguration.setPort(6379);

Updated Redis config

@Configurationpublic class RedisConfig {    @Bean    public RedisConnectionFactory redisConnectionFactory() {        System.out.println("Creating RedisConnectionFactory");        return new LettuceConnectionFactory();    }    @Bean    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {        System.out.println("Creating RedisTemplate");        RedisTemplate<String, Object> template = new RedisTemplate<>();        template.setConnectionFactory(redisConnectionFactory);        template.setKeySerializer(new StringRedisSerializer());        template.setValueSerializer(new GenericJackson2JsonRedisSerializer());        return template;    }}

Viewing all articles
Browse latest Browse all 2204

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>