1.配置參數解析
序號 | 參數名 | 含義 | 默認值 | 使用建議 |
---|---|---|---|---|
1 | maxTotal | 資源池中最大連接數 | 8 | 設置建議見下節 |
2 | maxIdle | 資源池允許最大空閒的連接數 | 8 | 設置建議見下節 |
3 | minIdle | 資源池確保最少空閒的連接數 | 0 | 設置建議見下節 |
4 | blockWhenExhausted | 當資源池用盡後,調用者是否要等待。只有當為true時,下面的maxWaitMillis才會生效 | true | 建議使用默認值 |
5 | maxWaitMillis | 當資源池連接用盡後,調用者的最大等待時間(單位為毫秒) | -1:表示永不超時 | 不建議使用默認值 |
6 | testOnBorrow | 向資源池借用連接時是否做連接有效性檢測(ping),無效連接會被移除 | false | 業務量很大時候建議設置為false(多一次ping的開銷)。 |
7 | testOnReturn | 向資源池歸還連接時是否做連接有效性檢測(ping),無效連接會被移除 | false | 業務量很大時候建議設置為false(多一次ping的開銷)。 |
8 | jmxEnabled | 是否開啟jmx監控,可用於監控 | true | 建議開啟,但應用本身也要開啟 |
2.空閒資源監測
空閒Jedis對象檢測,下面四個參數組合來完成,testWhileIdle是該功能的開關。
序號 | 參數名 | 含義 | 默認值 | 使用建議 |
---|---|---|---|---|
1 | testWhileIdle | 是否開啟空閒資源監測 | false | true |
2 | timeBetweenEvictionRunsMillis | 空閒資源的檢測週期(單位為毫秒) | -1:不檢測 | 建議設置,週期自行選擇,也可以默認也可以使用下面JedisPoolConfig中的配置 |
3 | minEvictableIdleTimeMillis | 資源池中資源最小空閒時間(單位為毫秒),達到此值後空閒資源將被移除 | 1000*60 *30 = 30分鐘 | 可根據自身業務決定,大部分默認值即可,也可以考慮使用下面JeidsPoolConfig中的配置 |
4 | numTestsPerEvictionRun | 做空閒資源檢測時,每次的採樣數 | 3 | 可根據自身應用連接數進行微調,如果設置為-1,就是對所有連接做空閒監測 |
Redis移除策略
Redis使用惰性刪除和定期刪除的策略
惰性刪除是在訪問數據時,首先判斷是否過期,如果過期,則刪除緩存返回為空;
定期刪除是一定時間內對數據庫進行掃描,清除掉過期數據,防止由於數據未被訪問而內存沒有釋放。定期刪除會設定最大的掃描時間以及每一個數據庫抽樣的個數;並且下次掃描會從根據上次掃描到的數據庫繼續掃描下一個數據庫。
關於移除策略常見名詞解釋
LRU (Least Recently Used): 淘汰最長時間未被使用的
LFU(least frequently used (LFU) page-replacement algorithm)是看頻率,淘汰一定時期內被訪問次數最少的
閱讀更多 東方既白 的文章