您的位置:首页 > 数据库 > Redis

Spring集成Redis集群

2017-11-06 16:15 399 查看
一、依赖介绍
1、Spring支持Redis集群且可设置集群节点密码

<!-- redis:支持集群&节点密码 -->

<dependency>

<groupId>redis.clients</groupId>

<artifactId>jedis</artifactId>

<version>2.9.0</version>

</dependency>

<dependency>

<groupId>org.springframework.data</groupId>

<artifactId>spring-data-redis</artifactId>

<version>1.8.0.RELEASE</version>

</dependency>

<dependency>

<groupId>org.springframework.session</groupId>

<artifactId>spring-session-data-redis</artifactId>

<version>1.2.2.RELEASE</version>

</dependency>
注意:需要spring-beans设置版本为4.2.8.RELEASE,即不完全支持spring3.x版本

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-beans</artifactId>

<version>4.2.8.RELEASE</version>

</dependency>
2、Spring支持Redis集群,但无法支持节点密码

<dependency>

<groupId>redis.clients</groupId>

<artifactId>jedis</artifactId>

<version>2.8.1</version>

</dependency>

<dependency>

<groupId>org.springframework.data</groupId>

<artifactId>spring-data-redis</artifactId>

<version>1.7.1.RELEASE</version>

</dependency>

二、配置文件

1、redis-cluster.properties

#密码

redis.password=666666

#缓存池最小空闲数

redis.minIdle=5

#缓存池最大空闲数

redis.maxIdle=100

#缓存池最大连接数

redis.maxTotal=300

#最大等待时间

redis.maxWaitMillis=3000

#客户端超时时间单位是毫秒

redis.timeout=100000

redis.maxTotal=1000

redis.minIdle=8

#明是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个

redis.testOnBorrow=true

#rediscluster

#本地虚拟机 Redis

spring.redis.cluster.nodes=192.168.74.129:7000,192.168.74.129:7001,192.168.74.129:7002,192.168.74.129:7003,192.168.74.129:7004,192.168.74.129:7005

spring.redis.cluster.max-redirects=3

#rediscluster

2、spring-redis-config.xml

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:p="http://www.springframework.org/schema/p"

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"

xmlns:cache="http://www.springframework.org/schema/cache"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.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
http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsd

">

<!-- 引入配置文件 -->

<bean id="propertyConfigurer"

class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

<property name="location" value="classpath:redis-cluster.properties" />

</bean>

<!-- jedis 配置-->

<bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig" >

<!--最大空闲数-->

<property name="maxIdle" value="${redis.maxIdle}" />

<!--最大建立连接等待时间-->

<property name="maxWaitMillis" value="${redis.maxWaitMillis}" />

<!--是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个-->

<property name="testOnBorrow" value="${redis.testOnBorrow}" />

</bean >

<!--配置文件加载-->

<bean id="resourcePropertySource" class="org.springframework.core.io.support.ResourcePropertySource">

<constructor-arg name="name" value="redis.properties"/>

<constructor-arg name="resource" value="classpath:redis-cluster.properties"/>

</bean>

<!--redisCluster配置-->

<bean id="redisClusterConfiguration" class="org.springframework.data.redis.connection.RedisClusterConfiguration">

<constructor-arg name="propertySource" ref="resourcePropertySource"/>

</bean>

<!-- redis服务器中心 -->

<bean id="connectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" >

<constructor-arg name="clusterConfig" ref="redisClusterConfiguration"/>

<constructor-arg name="poolConfig" ref="poolConfig"/>

<property name="password" value="${redis.password}" />

<property name="timeout" value="${redis.timeout}" ></property>

</bean >

<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate" >

<property name="connectionFactory" ref="connectionFactory" />

<!--如果不配置Serializer,那么存储的时候缺省使用String,如果用User类型存储,那么会提示错误User can't cast to String!! -->

<property name="keySerializer" >

<bean class="org.springframework.data.redis.serializer.StringRedisSerializer" />

</property>

<property name="valueSerializer" >

<bean class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer" />

</property>

<property name="hashKeySerializer">

<bean class="org.springframework.data.redis.serializer.StringRedisSerializer"/>

</property>

<property name="hashValueSerializer">

<bean class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer"/>

</property>

</bean >

</beans>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: