尝试使用Redis作为项目缓存 结果启动项目后,访问标注缓存注解的方法时报错
缓存注解的方法:
@Cacheable(value = "test", key = "#killId",cacheManager = "ItemKillCacheManager")
public ItemKill getIKilltem(Integer killId){
ItemKill itemKill=itemKillMapper.selectByIdV2(killId);
return itemKill;
}
报错:
org.springframework.data.redis.RedisConnectionFailureException: Cannot get Jedis connection; nested exception is redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool
网上说是Redis没有开启,确认我的Redis server是开启的,排除此原因。
仔细阅读报错信息,发现最后的部分有:
难道是我的ip地址设置不正确么 ? 我的项目在启动时就会连接redis,启动时没报错地址应该没问题才对啊 仔细一看,真的是redis的地址写的不对,确切来说写对了一半
总结:配置文件中 redis服务器的ip地址的末尾多了一个空格(黄色方块就是) 这个空格瞒过了项目启动时的连接(项目启动连接redis可能忽视末尾空格) 但是 Jedis从连接池中获取连接时将这个空格考虑在内了(Jedis这么较真干嘛?) 由于Redis缓存需要用到jedis客户端,所以导致访问标注了缓存的方法时报错 去掉了最后的空格 顺利解决问题
本人才疏学浅 大牛亲喷