spring redis 集群(redis3.x及以上版本)

随着高并发应用场景的需求增加,单机Redis不再足够。本文将探讨如何使用Spring进行Redis集群配置,主要介绍通过Jedis操作Redis Cluster的方法,并提供相关参考资料。

在高并发应用中,单机的redis已无法满足需求,所以我们需对redis做集群处理。目前主要有两种方式实现:

1、通过Jedis操作Redis Cluster的模型可以参考Redis官网,具体如下:

<!-- 对象池配置 -->
<bean id="jedisItemPoolConfig" class="org.apache.commons.pool2.impl.GenericObjectPoolConfig">
	<!-- 最大分配的对象数 -->
	<property name="maxTotal" value="${redis.pool.maxActive}" />
	<!-- 最小能够保持idel状态的对象数 -->
	<property name="minIdle" value="${redis.pool.minIdle}" />
	<!-- 最大能够保持idel状态的对象数 -->
	<property name="maxIdle" value="${redis.pool.maxIdle}" />
	<!-- 当池内没有返回对象时,最大等待时间 -->
	<property name="maxWaitMillis" value="${redis.pool.maxWait}" />
	<!-- 当调用borrow Object方法时,是否进行有效性检查 -->
	<property name="testOnBorrow" value="${redis.pool.testOnBorrow}" />
	<!-- 当调用return Object方法时,是否进行有效性检查 -->
	<property name="testOnReturn" value="${redis.pool.testOnReturn}" />
</bean>

<!-- REDIS的连接池pool -->
<bean id="jedisItemCluster" class="redis.clients.jedis.JedisCluster">
	<constructor-arg index="0">
	<list>
		<bean class="redis.clients.jedis.HostAndPort">
			<constructor-arg index="0" value="${redis.item.host}" />
			<constructor-arg index="1" value="${redis.item.port}" />
		</bean>
	</list>
	</constructor-arg>
	<constructor-arg index="1" ref="jedisItemPoolConfig" />
</bean>


2、通过spring-data-redis实现

<!-- 缓存管理器 -->
<bean id="cacheManager" class="org.yyy.auth.client.shiro.cache.RedisCacheManager"></bean>
<!-- redis序列化数据格式处理,这里自定义实现了org.springframework.data.redis.serializer.RedisSerializer<T>接口 -->
<bean id = "jedisSerializer" class = "org.yyy.auth.client.shiro.cache.FastJsonSerializer"></bean>
<!-- redis数据连接池 -->
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
	<!-- 最大分配的对象数 -->
	<property name="maxTotal" value="${redis.pool.maxActive}" />
	<!-- 最小能够保持IDLE状态的对象数 -->
	<property name="minIdle" value="${redis.pool.minIdle}" />
	<!-- 最大能够保持IDLE状态的对象数 -->
	<property name="maxIdle" value="${redis.pool.maxIdle}" />
	<!-- 当池内没有返回对象时,最大等待时间 -->
	<property name="maxWaitMillis" value="${redis.pool.maxWait}" />
	<!-- 当调用borrow Object方法时,是否进行有效性检查 -->
	<property name="testOnBorrow" value="${redis.pool.testOnBorrow}" />
	<!-- 当调用return Object方法时,是否进行有效性检查 -->
	<property name="testOnReturn" value="${redis.pool.testOnReturn}" />
</bean>
<!-- redis集群配置 -->
<bean id="redisClusterConfiguration" class="org.springframework.data.redis.connection.RedisClusterConfiguration">
	<property name="clusterNodes">
		<set>
			<bean class="org.springframework.data.redis.connection.RedisNode">
				<constructor-arg name="host" value="${shiro.redis.host}" />
				<constructor-arg name="port" value="${shiro.redis.port}" />
			</bean>
		</set>
	</property>
</bean>
<!-- redis工厂 -->
<bean id = "jedisClusterRedisConnectionFactory" class = "org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
	<constructor-arg name="clusterConfig" ref="redisClusterConfiguration"/>
	<constructor-arg name="poolConfig" ref="jedisPoolConfig"/>
</bean>
<!-- redis模板 -->
<bean id = "userRedisTemplate" class = "org.springframework.data.redis.core.RedisTemplate">
	<property name="keySerializer" ref = "jedisSerializer"/>
	<property name="connectionFactory" ref ="jedisClusterRedisConnectionFactory" />
</bean>


参考文献:http://www.cnblogs.com/moonandstar08/p/5149585.html


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值