Redis集群整合spring例子
前提:
1、applicationContext.xml
<beans default-autowire="byName" xmlns="http://www.springframework.org/schema/beans" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemalocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
<context:property-placeholder location="classpath:redis.properties" /></beans>
<context:component-scan base-package="com.bjsxt.service.impl,com.bjsxt.dao.impl"></context:component-scan>
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
<property name="maxIdle" value="8" />
<property name="maxTotal" value="8" />
<property name="maxWaitMillis" value="-1" />
<property name="testOnBorrow" value="false" />
</bean>
<bean id="hostport1" class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="192.168.159.129" />
<constructor-arg name="port" value="7002" />
</bean>
<bean id="hostport2" class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="192.168.159.129" />
<constructor-arg name="port" value="7003" />
</bean>
<bean id="hostport3" class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="192.168.159.129" />
<constructor-arg name="port" value="7004" />
</bean>
<bean id="hostport4" class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="192.168.159.129" />
<constructor-arg name="port" value="7005" />
</bean>
<bean id="hostport5" class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="192.168.159.129" />
<constructor-arg name="port" value="7006" />
</bean>
<bean id="hostport6" class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="192.168.159.129" />
<constructor-arg name="port" value="7007" />
</bean>
<bean id="redisCluster" class="redis.clients.jedis.JedisCluster">
<constructor-arg name="nodes">
<set>
<ref bean="hostport1" />
<ref bean="hostport2" />
<ref bean="hostport3" />
<ref bean="hostport4" />
<ref bean="hostport5" />
<ref bean="hostport6" />
</set>
</constructor-arg>
<constructor-arg name="timeout" value="6000" />
<constructor-arg name="poolConfig">
<ref bean="jedisPoolConfig" />
</constructor-arg>
</bean> 2、数据库层代码
@Repository
public class UserDaoImpl implements UserDao {
@Autowired
private JedisCluster redisCluster;
@Override
public void add() {
redisCluster.set("testkey1","11111111");
}
@Override
public void delete() {
redisCluster.del("testkey1");
}
@Override
public void update() {
redisCluster.set("testkey1","222222");
}
@Override
public List<User> getUsers() {
String name = redisCluster.get("testkey1");
System.out.println("name......"+name);
return null;
}}
spring配置文件中redis内容所对应的代码:
@Test
public void test3(){
// 池基本配置
JedisPoolConfig config = new JedisPoolConfig();
//是否启用后进先出, 默认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);
Set<HostAndPort> jedisClusterNodes = new HashSet<HostAndPort>();
jedisClusterNodes.add(new HostAndPort("192.168.159.129", 7002));
jedisClusterNodes.add(new HostAndPort("192.168.159.129", 7003));
jedisClusterNodes.add(new HostAndPort("192.168.159.129", 7004));
jedisClusterNodes.add(new HostAndPort("192.168.159.129", 7005));
jedisClusterNodes.add(new HostAndPort("192.168.159.129", 7006));
jedisClusterNodes.add(new HostAndPort("192.168.159.129", 7007));
JedisCluster jc = new JedisCluster(jedisClusterNodes,6000,10,config);
System.out.println(jc.get("name"));
jc.set("key8","8888");
jc.close();
}
