Spring Boot无法获得Jedis连接;无法从池中获取资源

时间:2020-05-14 13:20:45

标签: redis

我使用Spring Boot和Redis。我无法将数据插入Redis

依赖性已添加到pom.xml

<dependency>
        <groupId>redis.clients</groupId>
        <artifactId>jedis</artifactId>
        <version>3.3.0</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>


Exception:

org.springframework.data.redis.RedisConnectionFailureException:无法获取Jedis连接。嵌套的异常是redis.clients.jedis.exceptions.JedisConnectionException:无法从池中获取资源

课程

@配置 公共类SpringRedisConfig扩展了CachingConfigurerSupport {

@Bean
JedisConnectionFactory jedisConnectionFactory() {
    return new JedisConnectionFactory();
}

@Bean
public RedisTemplate<String, App> appRedisTemplate() {
    RedisTemplate<String, App> template = new RedisTemplate<>();
    template.setConnectionFactory(jedisConnectionFactory());
    template.setValueSerializer(new GenericToStringSerializer<App>(App.class));
    template.setKeySerializer(new StringRedisSerializer());                                           
    template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
    return template;
}

}

@RestController 公共类AppsController {

@Autowired AppRepository appRepository;
@Autowired AppRedisRepository appRedisRepository;
private String className = this.getClass().getName();


@RequestMapping(value= {"/**/searchapp"}, method=RequestMethod.POST)
 public @ResponseBody String doSearchApp(@RequestBody PageParams pageParams,HttpServletRequest request) {
     JsonObject js = new JsonObject();
     try {

         List<App> apps = appRepository.findAllApps();
         for(App app: apps) {
             appRedisRepository.save(app);
         }

         js.addProperty("respcode",AppConstants.RESPCODE_SUCCESS);
     }catch(Exception ex){
         ex.printStackTrace();
         js.addProperty("respcode",AppConstants.RESPCODE_EXPERROR);
    }
     return js.toString();
}

}

@存储库 公共类AppRedisRepositoryImpl实现AppRedisRepository {

private RedisTemplate <String, App> appRedisTemplate;
private HashOperations<String, Long, App> hashOperations;

public AppRedisRepositoryImpl(RedisTemplate<String, App> appRedisTemplate) {
    this.appRedisTemplate = appRedisTemplate;
    hashOperations = appRedisTemplate.opsForHash();
}

@Override
public void save(App app) {
    hashOperations.put("APP", app.getApp_id(),app);
}

@Override
public void update(App app) {
    save(app);

}

@Override
public Map<Long, App> findAll() {
    return hashOperations.entries("APP");

}

@Override
public App findById(long id) {
    return (App)hashOperations.get("APP", id);
}

}

预先感谢

0 个答案:

没有答案
相关问题