Redis学习_第四章(Redis数据连接池的SpringMVC实现)

目录

1:redis连接池配置

2:简单案例使用


1:redis连接池配置

1:redis.properties配置文件

redis.hostname=39.105.173.150
redis.port=6379
redis.database=0
redis.pool.maxActive=100
redis.pool.maxIdle=20
redis.pool.maxWait=3000
redis.pool.testOnBorrow=true

2:spring_redis.xml配置文件

<!-- Redis连接池的设置 -->
	<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
		<!-- 控制一个pool可分配多少个jedis实例 -->
		<property name="maxTotal" value="${redis.pool.maxActive}" />
		<!-- 连接池中最多可空闲maxIdle个连接 ,这里取值为20,表示即使没有数据库连接时依然可以保持20空闲的连接,而不被清除,随时处于待命状态。 -->
		<property name="maxIdle" value="${redis.pool.maxIdle}" />
		<!-- 最大等待时间:当没有可用连接时,连接池等待连接被归还的最大时间(以毫秒计数),超过时间则抛出异常 -->
		<property name="maxWaitMillis" value="${redis.pool.maxWait}" />
		<!-- 在获取连接的时候检查有效性 -->
		<property name="testOnBorrow" value="${redis.pool.testOnBorrow}" />
	</bean>
	<!--  创建jedisPoolWriper类 构造函数注入属性文件-->
	<bean id="jedisPoolWriper" class="com.thit.util.JedisPoolWriper">
		<constructor-arg index="0" ref="jedisPoolConfig"></constructor-arg>
		<constructor-arg index="1" value="${redis.hostname}" ></constructor-arg>
		<constructor-arg index="2" value="${redis.port}" type="int"></constructor-arg>
	</bean>

	<!-- 创建工具类,注入jedisPoolWriper -->
	<bean id="jedisUtil" class="com.thit.util.JedisUtil" scope="singleton">
		<property name="jedispool" ref="jedisPoolWriper"></property>
	</bean>

3:JedisPoolConfig代码实现 

public class JedisPoolWriper {
	//创建jedis对象
	JedisPool jedisPool;
	
	//构造函数注入JedisPoolConfig和地址和端口信息
	public JedisPoolWriper(final JedisPoolConfig jedisPoolConfig,
			final String host, final int port) {
		try {
			jedisPool=new JedisPool(jedisPoolConfig,host,port);

		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
	}
	public JedisPool getJedisPool() {
		return jedisPool;
	}
	public void setJedisPool(JedisPool jedisPool) {
		this.jedisPool = jedisPool;
	}

}

4:JedisUtil代码实现,用来从外部获取操作对象jedis

public class JedisUtil {
	
	private JedisPool jedispool;
	
	public JedisPool getJedispool() {
		return jedispool;
	}
	//通过setx注入poolWriper 获取jedispool
	public void setJedispool(JedisPoolWriper poolWriper) {
		this.jedispool = poolWriper.getJedisPool();
	}
	//获取jedis对象
	public Jedis getJedis() {
		return jedispool.getResource();
	}
}

2:简单案例使用

在serviceImpl中使用redis代码如下:

//自动注入jedisUtil
	@Autowired
	private JedisUtil JedisUtil;
	//serviceImpl的方法
	@Override
	public List<Area> selectAll() {
		ObjectMapper mapper=new ObjectMapper();
		List< Area> list=null;
		//获取jedis,并且获取key的值
		//如果不存在,查询数据库,放到reids中,存在直接读取
		//获取jedis
		Jedis jedis=JedisUtil.getJedis();
		boolean b=jedis.exists(AreaListKey);
		if(b) {
			//存在,读取redis,转换为list
			String string=jedis.get(AreaListKey);
			JavaType javaType=mapper.getTypeFactory().
					constructParametricType(ArrayList.class, Area.class);
			try {
				list=mapper.readValue(string, javaType);
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				throw new RuntimeException(e);
			}
		}else {
			//不存在查询,并且放到jedis中
			 list=areaDao.selectAll();
			try {
				jedis.set(AreaListKey, mapper.writeValueAsString(list));
			} catch (JsonProcessingException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				throw new RuntimeException(e);
			}
			
		}
		return list;
	}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值