探索jedis連接池預(yù)熱優(yōu)化高并發(fā)
序
本文主要研究一下jedis連接池的預(yù)熱
預(yù)熱
@Component @Slf4j public class JedisWarmUp implements CommandLineRunner { @Autowired JedisConnectionFactory jedisConnectionFactory; @Override public void run(String... args) throws Exception { GenericObjectPoolConfig poolConfig = jedisConnectionFactory.getPoolConfig(); if (poolConfig == null) { return ; } try { DirectFieldAccessor accessor = new DirectFieldAccessor(jedisConnectionFactory); JedisPool jedisPool = (JedisPool) accessor.getPropertyValue("pool"); if (jedisPool == null) { log.info("jedisConnectionFactory.pool is null"); return; } int warmUpSize = poolConfig.getMaxIdle(); warmUp(jedisPool, warmUpSize); } catch (Exception e) { log.error("warmup jedisPool error:{}", e.getMessage()); } } private void warmUp(JedisPool jedisPool, int warmUpSize) { List<Jedis> warmUpList = new ArrayList<>(warmUpSize); for (int i=0; i< warmUpSize; i++) { Jedis jedis = jedisPool.getResource(); jedis.ping(); warmUpList.add(jedis); } warmUpList.stream().forEach(jedis -> jedis.close()); } }
這里取了maxIdle配置來進(jìn)行預(yù)熱,通過DirectFieldAccessor來獲取jedisConnectionFactory對象的pool
小結(jié)
在高并發(fā)場景,通常需要對資源進(jìn)行預(yù)熱,比如數(shù)據(jù)庫連接池、redis連接池、線程池等等,可以避免首次請求慢的問題。這里通過先從連接池借一批連接,然后歸還一批連接來達(dá)到預(yù)熱的目的。
以上就是探索jedis連接池預(yù)熱優(yōu)化高并發(fā)的詳細(xì)內(nèi)容,更多關(guān)于jedis連接池預(yù)熱的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Java的線程池ThreadPoolExecutor及多種線程池實現(xiàn)詳解
這篇文章主要介紹了Java的線程池ThreadPoolExecutor及多種線程池實現(xiàn)詳解,ThreadPoolExecutor 使用 int 的高 3 位來表示線程池狀態(tài),低 29 位表示線程數(shù)量,之所以將信息存儲在一個變量中,是為了保證原子性,需要的朋友可以參考下2024-01-01Java泛型實現(xiàn)類型安全的通用類型轉(zhuǎn)換器
在開發(fā)中,我們常常需要在不同類型之間進(jìn)行轉(zhuǎn)換,為了提高代碼的可讀性與安全性,Java的泛型機(jī)制提供了強(qiáng)大的類型檢查能力,下面我們就來看看如何通過泛型實現(xiàn)類型安全的通用轉(zhuǎn)換器2024-11-11profiles.active多環(huán)境開發(fā)、測試、部署過程
這篇文章主要介紹了profiles.active多環(huán)境開發(fā)、測試、部署,主要講如何使用profiles.active這個變量,讓我們在開發(fā)過程快速切換環(huán)境配置,以及如何使一個部署適配各種不同的環(huán)境,需要的朋友可以參考下2023-03-03mybatis如何對大量數(shù)據(jù)的游標(biāo)查詢
這篇文章主要介紹了mybatis如何對大量數(shù)據(jù)的游標(biāo)查詢問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01Sa-Token不同模式實現(xiàn)單地登錄?多地登錄?同端互斥登錄
這篇文章主要為大家介紹了Sa-Token不同模式實現(xiàn)單地登錄?多地登錄?同端互斥登錄,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07SpringBoot+Redis實現(xiàn)布隆過濾器的示例代碼
本文主要介紹了SpringBoot+Redis實現(xiàn)布隆過濾器的示例代碼,文中根據(jù)實例編碼詳細(xì)介紹的十分詳盡,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03如何在mapper文件中使用in("str1","str2")
這篇文章主要介紹了如何在mapper文件中使用in("str1","str2"),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-01-01