rodert單排學習redis進階【白銀一】
redis之白銀一
說些題外話,最近帝都疫情又嚴重,大家都身處時代洪流中,這不是個別人能左右的,希望你能保護好自己,天天開心。
[toc]
前言
宣告:參考來源網際網路,有任何爭議可以留言。站在前人的肩上,我們才能看的更遠。
前文推薦閱讀:
rodert單排學習redis入門【黑鐵】
rodert 單排學習 redis 進階【青銅】
1.Redis 客戶端
1.1.Redis Desktop Manager
使用稱手的工具,做起事來
事半功倍
,用
redis-cli
自然不錯。我推薦一款我經常用的
Redis
視覺化工具,
Redis Desktop Manager
。
啟動介面如下:
至於安裝方式是
一鍵安裝
。
官網下載地址: https://redisdesktop.com/pricing
學生和學習者可以公眾號後臺回覆:【666】,免費獲取。
2.Redis 連線池
2.2.0.連線池
池技術被廣泛使用在系統開發中,像
JDBC
連線池、執行緒池等。連連線池是建立和管理一個連線的緩衝池的技術,這些連線準備好被任何需要它們的執行緒使用。
在處理一個任務時,我們大多情況要在數毫秒級別就完成,如果重複建立、關閉資源,會佔用較長時間和大量系統資源。
- 使用連線池優勢
- 減少連線建立時間
連線在系統初始化時就建立完成,需要時直接從池中取用,減少了時間開銷。
- 簡化的程式設計模式
當使用連線池時,每一個單獨的執行緒能夠像建立了一個自己的 JDBC 連線一樣操作。
- 受控的資源使用
連線池能夠控制一個模組的資源佔用率,不會讓一個模組資源佔用過高,導致整個系統崩潰。
2.1.Redis 連線池
2.1.1.前言引入
Redis
修煉之連線池篇,前面講了Redis入門篇: rodert單排學習redis入門【黑鐵】、 rodert 單排學習 redis 進階【青銅】,對Redis
基本資料型別的操作做了講解。
在以前沒有開源連線池時,很多人自寫連線池工具,簡單來說就是建立一個集合,存放一批連線,動態維護著。保證每個連線都是有效的。
2.1.2.Redis 連線池
本教程涉及到的一些程式碼都是 Java 語言編寫。
maven
依賴,引入
pom.xml
檔案
-
pom.xml
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.3.0</version>
</dependency>
-
RedisUtil.java
public final class RedisUtil {
//IP 地址
private static String ADDR = "127.0.0.1";
//埠號
private static int PORT = 6379;
//redis 服務端密碼
private static String PWD = "123456";
//可用連線例項最大數目,預設為 8,若賦值 -1,表示不被限制
private static Integer MAX_TOTAL = 1024;
//控制一個連線池最多有多少個狀態為空閒的 jedis 例項,預設值為 8
private static Integer MAX_IDLE = 200;
//等待可用連線最大的等待時間,單位 ms,預設值 -1,表示永不超時,若等待超時丟擲 JedisConnectionException
private static Integer MAX_WAIT_MILLIS = 10000;
//超時
private static Integer TIMEOUT = 10000;
//在用一個 jedis 例項時,是否提前進行 validate 操作,若結果為 true 則 jedis 例項可用
private static Boolean TEST_ON_BORROW = true;
//jedis 連線池
private static JedisPool jedisPool = null;
/**
* 初始化 jedis 連線池的靜態塊,RedisPool 第一次類載入時執行,以後便不再執行
*/
static {
try {
JedisPoolConfig conf = new JedisPoolConfig();
/*
* 高版本 jedis jar 中 JedisPoolConfig 沒有 setMaxActive 和 setMaxWait 屬性,因為官方在高版本 * 中啟用了此方法,用以下兩個屬性替換
* maxActive ==> maxTotal
* maxWait ==> maxWaitMillis
*/
//設定連線例項最大數目
conf.setMaxTotal(MAX_TOTAL);
//設定最多多少空閒的 jedis 例項
conf.setMaxIdle(MAX_IDLE);
//設定等待可用連線的最大時間
conf.setMaxWaitMillis(MAX_WAIT_MILLIS);
//設定是否提前進行測試借用
conf.setTestOnBorrow(TEST_ON_BORROW);
//新建 jedis 連線池
jedisPool = new JedisPool(conf, ADDR, PORT, TIMEOUT, PWD);
}
catch (Exception e) {
e.printStackTrace();
}
}
/*
* 獲取 jedis 例項來運算元據,每次使用完要將連線返回給連線池 jedis.close()
* @return
*/
public synchronized static Jedis getRedis() {
try {
if(jedisPool != null) {
//獲取 jedis 例項
Jedis jedis = jedisPool.getResource();
return jedis;
}
else{
System.out.println("沒有找到 Jedis 連線池!");
return null;
}
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/*
* 用來回收 Jedis 物件資源,使用者需要用到此方法釋放資源,否則一直佔用資源,在新版本中,`returnResource(jedis) 將被廢棄不推薦使用,`直接呼叫 `jedis.close();` 歸還連線到連線池。
* @param Jedis jedis
*/
public synchronized static void returnJedis(Jedis jedis) {
try {
if(jedis != null) {
//回收 jedis 物件資源
jedisPool.returnResource(jedis);
System.out.println("Jedis 被成功回收!");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
-
本教程純手打,致力於最實用教程,不需要什麼獎勵,只希望多多轉發支援。
歡迎來我公眾號,希望可以結識你,也可以催更,微信搜尋:JavaPub,白嫖原創電子書有任何問題都可以來談談 !
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69977829/viewspace-2700625/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 從零單排學Redis【白銀】Redis
- 從零單排學Redis【鉑金一】Redis
- linux進階命令學習一Linux
- 從零單排學Redis【黃金】Redis
- python進階學習筆記(一)Python筆記
- redis學習——高階功能Redis
- 從零單排學Redis【鉑金二】Redis
- Redis進階知識一覽Redis
- “白銀帝國”為何成也白銀,敗也白銀?
- (一)《SQL進階教程》學習記錄--CASESQL
- Java進階容器學習Java
- 機器學習進階 第一節 第一課機器學習
- 【3y】從零單排學Redis【青銅】Redis
- Redis學習(一)——初識RedisRedis
- Swift進階學習筆記Swift筆記
- Java學習路線·進階Java
- Python學習路線·進階Python
- Go 進階學習筆記Go筆記
- 白銀哪裡有開票-白銀開票
- 機器學習進階 第一節 第九課機器學習
- 機器學習進階 第一節 第四課機器學習
- 機器學習進階 第一節 第七課機器學習
- rodert教你學FFmpeg實戰這一篇就夠了
- 讀懂深度學習,走進“深度學習+”階段深度學習
- Rust build.rs進階學習RustUI
- 學習NEO開發如何進階
- U-Net學習與進階
- redis學習筆記(詳細)——高階篇Redis筆記
- 線段樹進階應用學習筆記(二)+普通資料結構進階應用學習筆記(一)(2024.10.1)筆記資料結構
- 機器學習進階 第一節 第十六課機器學習
- Redis學習筆記(一)——初識RedisRedis筆記
- [Redis 系列]redis 學習一,資料庫的演進及 Nosql 的初步認知Redis資料庫SQL
- Koa2進階學習筆記筆記
- Java列舉類學習到進階Java
- HTTP協議學習---(三)進階篇HTTP協議
- 會計進階學習路線圖
- 線段樹進階 學習筆記筆記
- Java進階學習之事件響應Java事件