温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

redis如何做连接池

发布时间:2022-01-05 17:33:13 来源:亿速云 阅读:124 作者:小新 栏目:互联网科技

这篇文章将为大家详细讲解有关 redis如何做连接池,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

redis针对每个链接请求也可以像数据库那样做池化处理,具体应用如下:

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();
		//连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true
		config.setBlockWhenExhausted(true);
		//是否启用后进先出, 默认true
		config.setLifo(true);
		//最大空闲连接数, 默认8个
		config.setMaxIdle(8);
		//最大连接数, 默认8个
		config.setMaxTotal(8);
		//获取连接时的最大等待毫秒数(如果设置为阻塞时BlockWhenExhausted),如果超时就抛异常, 小于零:阻塞不确定的时间,  默认-1
		config.setMaxWaitMillis(-1);
		//逐出连接的最小空闲时间 默认1800000毫秒(30分钟)
		config.setMinEvictableIdleTimeMillis(1800000);
		//最小空闲连接数, 默认0
		config.setMinIdle(0);
		//每次逐出检查时 逐出的最大数目 如果为负数就是 : 1/abs(n), 默认3
		config.setNumTestsPerEvictionRun(3);
		//对象空闲多久后逐出, 当空闲时间>该值 且 空闲连接>最大空闲数 时直接逐出,不再根据MinEvictableIdleTimeMillis判断  (默认逐出策略)   
		config.setSoftMinEvictableIdleTimeMillis(1800000);
		//在获取连接的时候检查有效性, 默认false
		config.setTestOnBorrow(false);
		//在空闲时检查有效性, 默认false
		config.setTestWhileIdle(false);
		//逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-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"));
	}
}

对于使用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>

关于“ redis如何做连接池”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI