我正在使用Redis的Amazon ElastiCach存储一些物品。在一种方法中,我与从JedisPool获得的一名jedis客户端调用redis 3或4次。在最后一次调用redis之后,JedisPool和Jedis均关闭。我称此方法为一分钟50次。它只是在某些时候停止处理消息: 无法将java.lang.Long强制转换为java.util.List 无法将java.util.ArrayList强制转换为java.lang.Long
我应该打个电话给redis吗-来自JedisPool的一个Jedis?
这是我的代码:
AmazonElastiCacheClient client = new AmazonElastiCacheClient(awsElastiCashCredentials);
Region elastiCachRegion = Region.getRegion(Regions.fromName(amazonProps.getElastiCachRegion()));
client.setRegion(elastiCachRegion);
DescribeCacheClustersRequest dccRequest = new DescribeCacheClustersRequest();
dccRequest.setShowCacheNodeInfo(true);
DescribeCacheClustersResult clusterResult = client.describeCacheClusters(dccRequest);
JedisPool pool = null;
List<CacheCluster> cacheClusters = clusterResult.getCacheClusters();
for (CacheCluster cacheCluster : cacheClusters) {
if (cacheCluster.getCacheClusterId().equals("001")) {
for (CacheNode cacheNode : cacheCluster.getCacheNodes()) {
String addr = cacheNode.getEndpoint().getAddress();
int port = cacheNode.getEndpoint().getPort();
try {
pool = new JedisPool(addr, port);
} catch (Exception e) {
log.error(e.getMessage());
e.printStackTrace();
}
}
}
}
和方法:
try (JedisPool pool = amazonElastiCacheService.connectToCachCluster()) {
try (Jedis jedis = pool.getResource()) {
fileEmail(jedis);
}
}
} catch (Exception e) {
log.error(e.getMessage());
e.printStackTrace();
}
} catch (Exception e) {
log.error(e.getMessage());
e.printStackTrace();
}
答案 0 :(得分:0)
好像您正在将对象值的列表(ArrayList
)分配给Long对象。
请参见line
#/ Class
,method
并进行修改。
或检查代码中的所有 Long
值分配,其中一些是您为其设置的n ArrayList
对象。
例如
Long value;
List<?> myList = new ArrayList<?>();
value = myList ;
我从共享代码中发现任何问题。