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); }