spring配置jedispool会自动回收吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring配置jedispool会自动回收吗相关的知识,希望对你有一定的参考价值。

1.引入jedis的jar包

<!-- redis -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.7.3</version>
</dependency>

2.在spring配置文件中添加配置

<!-- POOL配置 -->
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
<property name="maxTotal" value="50" />
<property name="maxIdle" value="10" />
<property name="maxWaitMillis" value="1000" />
<property name="testOnBorrow" value="true" />
</bean>
<!-- jedis shard信息配置 -->
<bean id="jedisShardInfo" class="redis.clients.jedis.JedisShardInfo">
<constructor-arg index="0" value="192.168.1.101" />
<constructor-arg index="1" value="6379" type="int" />
</bean>
<!-- jedis shard pool配置 -->
<bean id="shardedJedisPool" class="redis.clients.jedis.ShardedJedisPool">
<constructor-arg index="0" ref="jedisPoolConfig" />
<constructor-arg index="1">
<list>
<ref bean="jedisShardInfo" />
</list>
</constructor-arg>
</bean>

经过以上两个步骤,即可完成配置

3. 测试

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(value="/spring/applicationContext.xml", "/spring/redis.xml")
public class RedisTest

@Autowired
private ShardedJedisPool shardedJedisPool;

@Test
public void testSet()
ShardedJedis jedis = shardedJedisPool.getResource();
jedis.set("name", "wwss");


@Test
public void testGet()
ShardedJedis jedis = shardedJedisPool.getResource();
String name = jedis.get("name");
System.out.println(name);

参考技术A 如果不封装到redisTemplate,2.4.2之前的版本需要手动回收,2.5以后自动回收
如果封装到redisTemplate,则redisTemplate会管理jedis连接,也就是会在使用redisTemplate操作redis之后释放jedis连接

JedisPool配置详解

使用jedis连接池的时候,我们一般会引用 JedisPoolConfig这个类的配置。下面是JedisPoolConfig的继承图

 技术图片

在BaseObjectPoolConfig这个类下面,有如下配置字段:

技术图片

 

以上是关于spring配置jedispool会自动回收吗的主要内容,如果未能解决你的问题,请参考以下文章

如何在bean中注入jedispool

为啥回收站自动清空?

JedisPool配置详解

spring是否不能直接注入jedispool

Spring之Bean的自动装配

Shiro 集成Spring 使用 redis时 使用redisTemplate替代jedisPool