❶ 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);
}`