❶ java使用redis时不时的报没有可用的链接
出现这种问题从以下几个方面排查:
1、网络不稳定,这种情况只会出现在调用机器和redis服务器不在同一台机器的情况,如果调用本机redis请忽略。
2、使用了连接池,并发较大,连接池配置的最大连接数过小,客户端从连接池获取连接时,如果没有可用连接就阻塞当前线程直到有可用连接,等待时间超过配置的超时时间后会抛出连接超时异常。
3、同样是使用连接池的情况,从连接池获取连接,使用完成后没有释放连接,导致连接池链接耗尽。
4、还有可能是硬件性能瓶颈,比如单节点的redis,但是需要支持特别大的并发量,无论怎么优化配置都是徒劳的,这种情况就需要考虑做读写分离,搭建redis集群等,
❷ java操作redis集群问题CLUSTERDOWN The cluster is down. Use CLUSTER INFO for more information
java操作redis集群问题CLUSTERDOWN The cluster is down. Use CLUSTER INFO for more information,配置没有配置好的问题。
❸ Java工程师是如何使用Redis的
redis算是用的最多的key-value型缓存组件了!
因为使用了key-value型,所以存取效率极好,简单来说就类似JAVA中的hashMap,不过是用整个服务器内存来当做map,但是redis的数据可以通过配置指令保存到硬盘(同步保存save,异步保存bgsave)!
当然,redis在使用过程中会存在持久化失败,缓存击穿,扩容困难等问题,不过无论如何,redis都是一款最值得用的缓存工具!
使用过程中有任何问题,欢迎大家一起交流,redis还有什么遗漏功能,也请大家补充,谢谢!
❹ 如何用java实现基于JedisCluster对象的连接池
基于redis集群的java小demo,用于从hadoop中读取文件,然后写入redis集群,但是单个JedisCluster连接在生产中不够效率,不知道哪位大神能给点基于JedisCluster的连接池示例?
下面是我的一点代码
`static {
URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());
}
public static void main(String[] args) throws Exception {
writeRedis("hdfs://mycluster/test/test.txt",new int[]{0});
//writeRedis(initConfig());
}
public static void writeRedis(String inpath, int[] keyIndex) throws Exception {
InputStream in = new URL(inpath).openStream();// 输入流 ]
LineIterator br = org.apache.commons.io.IOUtils.lineIterator(in, "utf8");// 指定输入流与字符编码
JedisCluster cluster = RedisUtils.getClusterConn();
String[] line = null;
while (br.hasNext()) {
String s = br.next();
line = RedisUtils.split(s);
String key = "";
for (int i = 0; i < keyIndex.length; i++) {
key += line[keyIndex[i]];// TODO:如果有必要,添加分隔符
}
cluster.setnx(key, s);
}
RedisUtils.clusterClose(cluster);
}`