SDR(spring.data.redis)与Sentinel高可用集群Redis客户端Jedis配置
2017-08-16 09:45
459 查看
依赖
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>4.3.3.RELEASE</version> </dependency> <!--sdr--> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version> 1.7.2.RELEASE</version> </dependency> <!--jedis--> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency>
spring配置(redis.properties文件自行配置)
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>classpath*:redis.properties</value> </list> </property> </bean> <!-- redis属性配置 --> <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"> <property name="maxTotal" value="${redis.pool.maxTotal}" /> <property name="maxIdle" value="${redis.pool.maxIdle}" /> <property name="numTestsPerEvictionRun" value="${redis.pool.numTestsPerEvictionRun}" /> <property name="timeBetweenEvictionRunsMillis" value="${redis.pool.timeBetweenEvictionRunsMillis}" /> <property name="minEvictableIdleTimeMillis" value="${redis.pool.minEvictableIdleTimeMillis}" /> <property name="softMinEvictableIdleTimeMillis" value="${redis.pool.softMinEvictableIdleTimeMillis}" /> <property name="maxWaitMillis" value="${redis.pool.maxWaitMillis}" /> <property name="testOnBorrow" value="${redis.pool.testOnBorrow}" /> </bean> <!-- redis集群配置 哨兵架构 --> <bean id="redisSentinelConfiguration" class="org.springframework.data.redis.connection.RedisSentinelConfiguration"> <property name="master"> <bean class="org.springframework.data.redis.connection.RedisNode"> <!--这个值要和Sentinel中指定的master的值一致,不然启动时找不到Sentinel会报错的--> <property name="name" value="${redis.master.name}"></property> </bean> </property> <!--记住了,这里是指定Sentinel的IP和端口--> <property name="sentinels"> <set> <bean class="org.springframework.data.redis.connection.RedisNode"> <constructor-arg name="host" value="${redis.sentinel.host1}"></constructor-arg> <constructor-arg name="port" value="${redis.sentinel.port1}"></constructor-arg> </bean> <bean class="org.springframework.data.redis.connection.RedisNode"> <constructor-arg name="host" value="${redis.sentinel.host2}"></constructor-arg> <constructor-arg name="port" value="${redis.sentinel.port2}"></constructor-arg> </bean> </set> </property> </bean> <!--redis连接工厂--> <bean id="redisConnectionFactory" class="org.springframework.data.redis.connection.jedis.RedisConnectionFactory"> <constructor-arg name="sentinelConfig" ref="redisSentinelConfiguration"></constructor-arg> <constructor-arg name="poolConfig" ref="jedisPoolConfig"></constructor-arg> </bean> <!--redis模板--> <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate"> <property name="connectionFactory" ref="redisConnectionFactory"></property> </bean>
Test
JedisSentinel集群测试JedisSentinel集群测试
/** * Author: Starry.Teng * Email: tengxing7452@163.com * Date: 17-8-14 * Time: 下午8:26 * Describe: Spring Jedis Sentinel 测试 */ @RunWith(SpringRunner.class) @ContextConfiguration(locations = {"classpath:sentinel.xml"}) public class SDRJedisSentinelTest { @Test public void sentinel(){ System.out.print("SpringJedisSentinel集群客户端测试成果"); } }
运行打印:
八月 15, 2017 6:59:25 下午 redis.clients.jedis.JedisSentinelPool initSentinels 信息: Trying to find master from available Sentinels... 八月 15, 2017 6:59:25 下午 redis.clients.jedis.JedisSentinelPool initSentinels 信息: Redis master running at 127.0.0.1:8001, starting Sentinel listeners... 八月 15, 2017 6:59:25 下午 redis.clients.jedis.JedisSentinelPool initPool 信息: Created JedisPool to master at 127.0.0.1:8001 SpringJedisSentinel集群客户端测试成果
tips:
启动前应该保证redis集群服务器开启
配合属性文件要正确
master-name必须与redis-sentinel中指定的一致
笔者的redis.properties配置(仅供产考)github
相关文章推荐
- jedis(redis)整合spring,包括jedis客户端单机版,jedis集群版配置 ,连接池配置
- Redis的java客户端(jedis)配置(spring)与使用
- Redis的java客户端(jedis)配置(spring)与使用
- spring-data-redis + Jedis配置文件
- Redis客户端之Spring整合Jedis,ShardedJedisPool集群配置
- redis客户端jedis&spring-data-redis源码赏析
- jedis-2.4.2 和 spring-data-redis-1.2.0.RELEASE 配置
- spring-data-redis + Jedis配置文件
- spring-data-redis用配置类连接时,抛异常Cannot get Jedis connection; nested exception is java.lang.NullPointerEx
- spring-data-redis用配置类连接时,抛异常Cannot get Jedis connection; nested exception is java.lang.NullPointerE
- Redis客户端之Spring整合Jedis
- Spring-data-jedis单机配置
- Spring Session Data Redis 配置中遇到的坑
- redis 客户端结合spring配置应用
- redis客户端jedis连接和spring结合
- spring-data-redis与Jedis整合使用
- spring boot 配置redis 启动报错:Cannot get Jedis connection;Could not get a resource from the pool
- 征服 Redis + Jedis + Spring (一)—— 配置&常规操作(GET SET DEL)
- Spring Data Redis 单节点和集群配置和RedisTemplate用法
- 在Linux上(我的服务器是Ubuntu) 用redis-trib.rb搭建redis集群,并在客户端使用spring-data-redis连接(亲测)