溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

redis如何做連接池

發(fā)布時(shí)間:2022-01-05 17:33:13 來源:億速云 閱讀:124 作者:小新 欄目:互聯(lián)網(wǎng)科技

這篇文章將為大家詳細(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)把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(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)容。

AI