導航:首頁 > 編程語言 > redis連接池java

redis連接池java

發布時間:2023-09-12 06:22:37

⑴ 如何用java獲取redis的info

預備
jedis-2.5.2
commons-pool2-2.2.jar
使用單連接
此方式僅建議用於開發環境做調試用。
// 創建連接
String host = "192.168.56.102";
int port = 6379;
Jedis client = new Jedis(host, port);
// 執行set指令
String result = client.set("key-string", "Hello, Redis!");
System.out.println( String.format("set指令執行結果:%s", result) );
// 執行get指令
String value = client.get("key-string");
System.out.println( String.format("get指令執行結果:%s", value) );
運行上述代碼,控制台輸出:
set指令執行結果:OK
get指令執行結果:Hello, Redis!
使用連接池
此方式適用於僅使用單個Redis實例的場景。
// 生成連接池配置信息
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxIdle(10);
config.setMaxTotal(30);
config.setMaxWaitMillis(3*1000);

// 在應用初始化的時候生成連接池
JedisPool pool = new JedisPool(config, "192.168.56.102", 6379);

// 在業務操作時,從連接池獲取連接
Jedis client = pool.getResource();
try {
// 執行指令
String result = client.set("key-string", "Hello, Redis!");
System.out.println( String.format("set指令執行結果:%s", result) );
String value = client.get("key-string");
System.out.println( String.format("get指令執行結果:%s", value) );
} catch (Exception e) {
// TODO: handle exception
} finally {
// 業務操作完成,將連接返回給連接池
if (null != client) {
pool.returnResource(client);
}
} // end of try block

// 應用關閉時,釋放連接池資源
pool.destroy();

運行上述代碼,控制台輸出:

set指令執行結果:OK
get指令執行結果:Hello, Redis!
使用連接池+分布式
在規模較大的系統中,往往會有多個Redis實例做負載均衡。並且還實現主從備份,當主實例發生故障時,切換至從實例提供服務。
類似於Memcached的客戶端,Jedis也提供了客戶端分布式操作的方式,採用一致性哈希演算法。
// 生成多機連接信息列表
List<JedisShardInfo> shards = new ArrayList<JedisShardInfo>();
shards.add( new JedisShardInfo("127.0.0.1", 6379) );
shards.add( new JedisShardInfo("192.168.56.102", 6379) );

// 生成連接池配置信息
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxIdle(10);
config.setMaxTotal(30);
config.setMaxWaitMillis(3*1000);

// 在應用初始化的時候生成連接池
ShardedJedisPool pool = new ShardedJedisPool(config, shards);

// 在業務操作時,從連接池獲取連接
ShardedJedis client = pool.getResource();
try {
// 執行指令
String result = client.set("key-string", "Hello, Redis!");
System.out.println( String.format("set指令執行結果:%s", result) );
String value = client.get("key-string");
System.out.println( String.format("get指令執行結果:%s", value) );
} catch (Exception e) {
// TODO: handle exception
} finally {
// 業務操作完成,將連接返回給連接池
if (null != client) {
pool.returnResource(client);
}
} // end of try block

// 應用關閉時,釋放連接池資源
pool.destroy();

運行上述代碼,控制台輸出:

set指令執行結果:OK
get指令執行結果:Hello, Redis!

⑵ java redis 連接池有哪幾種

我只知道redis.clients.jedis.Jedis里有
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
能有,你可以搜內索試下。容

⑶ 如何連接redis資料庫

1、在配置文件redis.conf中把綁定的Ip注釋掉

到此就連接成功了。

⑷ java使用redis時不時的報沒有可用的鏈接

出現這種問題從以下幾個方面排查:
1、網路不穩定,這種情況只會出現在調用機器和redis伺服器不在同一台機器的情況,如果調用本機redis請忽略。
2、使用了連接池,並發較大,連接池配置的最大連接數過小,客戶端從連接池獲取連接時,如果沒有可用連接就阻塞當前線程直到有可用連接,等待時間超過配置的超時時間後會拋出連接超時異常。
3、同樣是使用連接池的情況,從連接池獲取連接,使用完成後沒有釋放連接,導致連接池鏈接耗盡。
4、還有可能是硬體性能瓶頸,比如單節點的redis,但是需要支持特別大的並發量,無論怎麼優化配置都是徒勞的,這種情況就需要考慮做讀寫分離,搭建redis集群等,

⑸ java連接redis超時問題怎麼解決

應該是redis本身的服務有問題了
本文所針對的連接超時問題所涉及的相關元素如下:
Redis客戶端: Jedis (java)
Redis版本 :2.8.12
Redis部署操作系統類型:Linux

正文開始:

No 1.Redis執行大命令(時間復雜度為O(N)的命令)
問題剖析:
a.Redis伺服器端通過單線程處理命令,一旦有大命令被執行,Redis將無法及時響應來旁鬧自客戶端的任何命令
關於Redis大命令的監控,可以查看slowlog來觀察
b.在使用jedis作為redis客戶端時,當redis連接池的配置參數testOnBorrow=true時,默認會在獲取redis連接
時,先執行redis的ping方法,而基於原因a,此時redis將無法及時響應,自然會報出time out異常
如何解決:
a.盡量避免使用時間復雜度為O(N)的命令
b.如果無模啟檔法避免使用時間復雜度為O(N)的命令,則應降低其使用頻率,避免在業務高峰期時使用

No 2.Redis單次操作數據包過大
問題分析
a.單次操作數據包過大,且操作頻繁,極有可能會導致網路擁堵
b.在使用jedis作為redis客戶端時,當redis連接池的配置參數testOnBorrow=true時,默認會在獲取redis連接
時,先執行redis的ping方法,而基於原因a,此時redis將無法及時響應,自然會報出time out異常
如何解決:
a.排查代碼,確定是否存在大數據(數據條目過多/單條數據過大)操作,將其進行改造,改造方案有兩個:
a1.數據拆分,變更數據類型(常見的情況是將java中的collection類型序列化後存入redis的String數據
類型中),如將String數據類型調整為hash/list/set等,這常用於解決單條數據量過大的情況
a2.調整業務邏輯,減少單次數據查詢范圍(常見的情況如將redis中的整個hash數據取回,在應用程序內存中獲取需要的entry),如使用hget等單條查詢命旦亂令替換hgetall命令

閱讀全文

與redis連接池java相關的資料

熱點內容
頁面自適應屏幕如何調整代碼數據 瀏覽:681
jsjson工具 瀏覽:299
資料庫中如何備份一張表的數據 瀏覽:739
網路設備能用到什麼 瀏覽:64
暴風轉碼如何添加文件夾 瀏覽:515
延安整合網路營銷有哪些 瀏覽:74
查找word打開過的文件在哪裡 瀏覽:137
b樹java代碼 瀏覽:683
電腦文件存儲 瀏覽:657
蘭州中考徵集志願在哪個網站 瀏覽:215
cs文件上傳下載 瀏覽:244
拷貝文件到根目錄下重命名linux 瀏覽:603
api函數的頭文件 瀏覽:249
華為怎麼綁定迷你編程 瀏覽:215
機構怎麼申請少兒編程考級 瀏覽:495
崑山數控編程哪裡好學 瀏覽:459
jspcfor跳出 瀏覽:65
word怎麼插入羅馬數字i 瀏覽:315
哪個網站可以找到法人代表 瀏覽:106
蘋果5s日版a1453支持什麼網路 瀏覽:297

友情鏈接