Redis集群:使用Spring和jedisCluster操作Redis集群

 

jedisCluster

 

非Spring和jedisCluster操作Redis集群

jar包

 <!-- 指定版本号 -->
<properties>
  
	<!-- JEDIS -->
	<jedis.version>2.7.1</jedis.version>

</properties>

<!-- JEDIS -->
<dependency>
	<groupId>redis.clients</groupId>
	<artifactId>jedis</artifactId>
	<version>${jedis.version}</version>
</dependency>

测试代码

// 连接redis集群
@Test
public void testJedisCluster() {

	JedisPoolConfig config = new JedisPoolConfig();
	// 最大连接数
	config.setMaxTotal(30);
	// 最大连接空闲数
	config.setMaxIdle(2);

	//集群结点
	Set<HostAndPort> jedisClusterNode = new HashSet<HostAndPort>();
	jedisClusterNode.add(new HostAndPort("192.168.101.3", 7001));
	jedisClusterNode.add(new HostAndPort("192.168.101.3", 7002));
	jedisClusterNode.add(new HostAndPort("192.168.101.3", 7003));
	jedisClusterNode.add(new HostAndPort("192.168.101.3", 7004));
	jedisClusterNode.add(new HostAndPort("192.168.101.3", 7005));
	jedisClusterNode.add(new HostAndPort("192.168.101.3", 7006));
	JedisCluster jc = new JedisCluster(jedisClusterNode, config);
	
	JedisCluster jcd = new JedisCluster(jedisClusterNode);
	jcd.set("name", "zhangsan");
	String value = jcd.get("name");
	System.out.println(value);
}

Spring和jedisCluster操作Redis集群

配置applicationContext.xml

没有集群密码

<!-- 连接池配置 -->
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
	<!-- 最大连接数 -->
	<property name="maxTotal" value="30" />
	<!-- 最大空闲连接数 -->
	<property name="maxIdle" value="10" />
	<!-- 每次释放连接的最大数目 -->
	<property name="numTestsPerEvictionRun" value="1024" />
	<!-- 释放连接的扫描间隔(毫秒) -->
	<property name="timeBetweenEvictionRunsMillis" value="30000" />
	<!-- 连接最小空闲时间 -->
	<property name="minEvictableIdleTimeMillis" value="1800000" />
	<!-- 连接空闲多久后释放, 当空闲时间>该值 且 空闲连接>最大空闲连接数 时直接释放 -->
	<property name="softMinEvictableIdleTimeMillis" value="10000" />
	<!-- 获取连接时的最大等待毫秒数,小于零:阻塞不确定的时间,默认-1 -->
	<property name="maxWaitMillis" value="1500" />
	<!-- 在获取连接的时候检查有效性, 默认false -->
	<property name="testOnBorrow" value="true" />
	<!-- 在空闲时检查有效性, 默认false -->
	<property name="testWhileIdle" value="true" />
	<!-- 连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true -->
	<property name="blockWhenExhausted" value="false" />
</bean>	
<!-- redis集群 -->
<bean id="jedisCluster" class="redis.clients.jedis.JedisCluster">
	<constructor-arg index="0">
		<set>
			<bean class="redis.clients.jedis.HostAndPort">
				<constructor-arg index="0" value="192.168.101.3"></constructor-arg>
				<constructor-arg index="1" value="7001"></constructor-arg>
			</bean>
			<bean class="redis.clients.jedis.HostAndPort">
				<constructor-arg index="0" value="192.168.101.3"></constructor-arg>
				<constructor-arg index="1" value="7002"></constructor-arg>
			</bean>
			<bean class="redis.clients.jedis.HostAndPort">
				<constructor-arg index="0" value="192.168.101.3"></constructor-arg>
				<constructor-arg index="1" value="7003"></constructor-arg>
			</bean>
			<bean class="redis.clients.jedis.HostAndPort">
				<constructor-arg index="0" value="192.168.101.3"></constructor-arg>
				<constructor-arg index="1" value="7004"></constructor-arg>
			</bean>
			<bean class="redis.clients.jedis.HostAndPort">
				<constructor-arg index="0" value="192.168.101.3"></constructor-arg>
				<constructor-arg index="1" value="7005"></constructor-arg>
			</bean>
			<bean class="redis.clients.jedis.HostAndPort">
				<constructor-arg index="0" value="192.168.101.3"></constructor-arg>
				<constructor-arg index="1" value="7006"></constructor-arg>
			</bean>
		</set>
	</constructor-arg>
	<constructor-arg index="1" ref="jedisPoolConfig"></constructor-arg>
</bean>

如果需要设置redis集群密码,可以这样配置

<!--配置redis集群 -->
<bean id="jedisCuster" class="redis.clients.jedis.JedisCluster">
	<constructor-arg name="jedisClusterNode">
		<!--设置集群节点 -->
		<set>
			<bean class="redis.clients.jedis.HostAndPort">
				<constructor-arg name="host" value="${redis.host}"/>
				<constructor-arg name="port" value="${redis.port1}"/>
			</bean>
			<bean class="redis.clients.jedis.HostAndPort">
				<constructor-arg name="host" value="${redis.host}"/>
				<constructor-arg name="port" value="${redis.port2}"/>
			</bean>
			<bean class="redis.clients.jedis.HostAndPort">
				<constructor-arg name="host" value="${redis.host}"/>
				<constructor-arg name="port" value="${redis.port3}"/>
			</bean>
			<bean class="redis.clients.jedis.HostAndPort">
				<constructor-arg name="host" value="${redis.host}"/>
				<constructor-arg name="port" value="${redis.port4}"/>
			</bean>
			<bean class="redis.clients.jedis.HostAndPort">
				<constructor-arg name="host" value="${redis.host}"/>
				<constructor-arg name="port" value="${redis.port5}"/>
			</bean>
			<bean class="redis.clients.jedis.HostAndPort">
				<constructor-arg name="host" value="${redis.host}"/>
				<constructor-arg name="port" value="${redis.port6}"/>
			</bean>
		</set>
	</constructor-arg>
	<!--设置连接超时时间 -->
	<constructor-arg name="connectionTimeout" value="${redis.timeout}"/>
	<!--设置网络通信超时时间 -->
	<constructor-arg name="soTimeout" value="${redis.soTimeout}"/>
	<!--设置集群访问密码 -->
	<constructor-arg name="password" value="${redis.password}"/>
	<!--设置最大重试次数 -->
	<constructor-arg name="maxAttempts" value="${redis.attempts}"/>
	<!--设置jedisPool配置 -->
	<constructor-arg name="poolConfig" ref="jedisPoolConfig"/>
</bean>

测试代码

private ApplicationContext applicationContext;

@Before
public void init() {
	applicationContext = new ClassPathXmlApplicationContext(
			"classpath:applicationContext.xml");
}

//redis集群
@Test
public void testJedisCluster() {
JedisCluster jedisCluster = (JedisCluster) applicationContext
				.getBean("jedisCluster");
		
	jedisCluster.set("name", "zhangsan");
	String value = jedisCluster.get("name");
	System.out.println(value);
}

 

 

 

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

琦彦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值