Web*_*ser 1 java redis spring-boot
我正在开发一个 Spring Boot [web] REST 风格的应用程序ServletInitializer(因为它需要部署到现有的 Tomcat 服务器)。它有一个@RestControllerwith 方法,调用该方法时需要写入 Redis pub-sub channel。我的 Redis 服务器在本地主机上运行(默认端口,无密码)。POM 文件的相关部分具有所需的启动依赖项:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)
当我部署 WAR 并到达端点时http://localhost:8080/springBootApp/health,我得到以下响应:
{
"status": "DOWN",
"diskSpace": {
"status": "UP",
"total": 999324516352,
"free": 691261681664,
"threshold": 10485760
},
"redis": {
"status": "DOWN",
"error": "org.springframework.data.redis.RedisConnectionFailureException: java.net.SocketTimeoutException: Read timed out; nested exception is redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketTimeoutException: Read timed out"
}
}
Run Code Online (Sandbox Code Playgroud)
我将以下内容添加到我的 Spring Boot 应用程序类中:
@Bean
JedisConnectionFactory jedisConnectionFactory() {
return new JedisConnectionFactory();
}
@Bean
public RedisTemplate<String, Object> redisTemplate() {
RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
template.setConnectionFactory(jedisConnectionFactory());
return template;
}
Run Code Online (Sandbox Code Playgroud)
在执行一些测试 Redis 代码之前,我还尝试将以下内容添加到我的代码中@RestController,但在堆栈跟踪中得到与上面相同的错误:
@Autowired
private RedisTemplate<String, String> redisTemplate;
Run Code Online (Sandbox Code Playgroud)
编辑(2017-05-09) 我的理解是 Spring Boot Redis 启动器假定spring.redis.host=localhost和的默认值spring.redis.port=6379,我仍然将这两个添加到application.properties,但这并没有填补空白。
更新(2017-05-10)我对此线程添加了答案。
| 归档时间: |
|
| 查看次数: |
24189 次 |
| 最近记录: |