您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān) redis如何做連接池,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
redis針對(duì)每個(gè)鏈接請(qǐng)求也可以像數(shù)據(jù)庫(kù)那樣做池化處理,具體應(yīng)用如下:
package redisOne; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; public class RedisPoolUtil { private static JedisPool jedisPool = null; static { JedisPoolConfig config = new JedisPoolConfig(); //連接耗盡時(shí)是否阻塞, false報(bào)異常,ture阻塞直到超時(shí), 默認(rèn)true config.setBlockWhenExhausted(true); //是否啟用后進(jìn)先出, 默認(rèn)true config.setLifo(true); //最大空閑連接數(shù), 默認(rèn)8個(gè) config.setMaxIdle(8); //最大連接數(shù), 默認(rèn)8個(gè) config.setMaxTotal(8); //獲取連接時(shí)的最大等待毫秒數(shù)(如果設(shè)置為阻塞時(shí)BlockWhenExhausted),如果超時(shí)就拋異常, 小于零:阻塞不確定的時(shí)間, 默認(rèn)-1 config.setMaxWaitMillis(-1); //逐出連接的最小空閑時(shí)間 默認(rèn)1800000毫秒(30分鐘) config.setMinEvictableIdleTimeMillis(1800000); //最小空閑連接數(shù), 默認(rèn)0 config.setMinIdle(0); //每次逐出檢查時(shí) 逐出的最大數(shù)目 如果為負(fù)數(shù)就是 : 1/abs(n), 默認(rèn)3 config.setNumTestsPerEvictionRun(3); //對(duì)象空閑多久后逐出, 當(dāng)空閑時(shí)間>該值 且 空閑連接>最大空閑數(shù) 時(shí)直接逐出,不再根據(jù)MinEvictableIdleTimeMillis判斷 (默認(rèn)逐出策略) config.setSoftMinEvictableIdleTimeMillis(1800000); //在獲取連接的時(shí)候檢查有效性, 默認(rèn)false config.setTestOnBorrow(false); //在空閑時(shí)檢查有效性, 默認(rèn)false config.setTestWhileIdle(false); //逐出掃描的時(shí)間間隔(毫秒) 如果為負(fù)數(shù),則不運(yùn)行逐出線程, 默認(rèn)-1 config.setTimeBetweenEvictionRunsMillis(-1); jedisPool = new JedisPool(config, "localhost", 6379); } public static String getOneKey(String key) { String value = jedisPool.getResource().get(key); return value; } public static void setOneKey(String key, String value) { jedisPool.getResource().set(key, value); } public static void main(String[] args) { RedisPoolUtil.setOneKey("liuc", "liuc"); System.out.println(RedisPoolUtil.getOneKey("liuc")); } }
對(duì)于使用spring做bean管理的,可以采用如下配置
<bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig"> <property name="maxTotal" value="2048" /> <property name="maxIdle" value="200" /> <property name="numTestsPerEvictionRun" value="1024" /> <property name="timeBetweenEvictionRunsMillis" value="30000" /> <property name="minEvictableIdleTimeMillis" value="-1" /> <property name="softMinEvictableIdleTimeMillis" value="10000" /> <property name="maxWaitMillis" value="1500" /> <property name="testOnBorrow" value="true" /> <property name="testWhileIdle" value="true" /> <property name="testOnReturn" value="false" /> <property name="jmxEnabled" value="true" /> <property name="jmxNamePrefix" value="youyuan" /> <property name="blockWhenExhausted" value="false" /> </bean> <bean id="redisPool" class="redis.clients.jedis.JedisPool"> <!-- 連接池配置 --> <constructor-arg index="0"> <ref bean="poolConfig" /> </constructor-arg> <!-- host --> <constructor-arg index="1" value="127.0.0.1" /> <!-- port --> <constructor-arg index="2" value="6379" type="int" /> </bean>
關(guān)于“ redis如何做連接池”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。