Jedis——Redis在java中的使用(集群版)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/LyySwx/article/details/86914285

目录

 环境

集群版------Java中通过JedisCluster对象使用Redis服务

更优雅的方式

继续优化


 环境

 虚拟机ip地址:*.*.*.*例如:192.168.25.128,加上端口号

可在一台虚拟机中安装多台Redis服务

也可在多台虚拟机中分别安装Redis服务

集群版------Java中通过JedisCluster对象使用Redis服务

(1)如果是Maven工程,则在pom文件中配置

    <!-- Redis客户端 -->
    <dependency>
         <groupId>redis.clients</groupId>
         <artifactId>jedis</artifactId>
         <version>2.7.2</version>
   </dependency>

 (2)集群测试类

package cn.e3mall.jedis;

import java.util.HashSet;
import java.util.Set;

import org.junit.Test;

import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisCluster;
import redis.clients.jedis.JedisPool;

public class JedisTest {
	
	
	@Test
	public void testJedisCluster() throws Exception{
		//创建一个JedisCluster对象,有一个参数nodes是一个set类型,set种包含若干HostAndPort对象
		Set<HostAndPort> nodes=new HashSet<>();
		nodes.add(new HostAndPort("192.168.25.128", 7001));
		nodes.add(new HostAndPort("192.168.25.128", 7002));
		nodes.add(new HostAndPort("192.168.25.128", 7003));
		nodes.add(new HostAndPort("192.168.25.128", 7004));
		nodes.add(new HostAndPort("192.168.25.128", 7005));
		nodes.add(new HostAndPort("192.168.25.128", 7006));
		JedisCluster jedisCluster=new JedisCluster(nodes);
		//直接使用JedisCluster对象操作redis。
		String string = jedisCluster.set("test", "123");
		System.out.println(string);
		//关闭JedisCluster
		jedisCluster.close();
	}
}

更优雅的方式

(1)maven依赖

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

(2)使用Spring,配置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.25.128"></constructor-arg>

                     <constructor-arg index="1" value="7001"></constructor-arg>

                </bean>

                <bean class="redis.clients.jedis.HostAndPort">

                     <constructor-arg index="0" value="192.168.25.128"></constructor-arg>

                     <constructor-arg index="1" value="7002"></constructor-arg>

               </bean>

               <bean class="redis.clients.jedis.HostAndPort">

                      <constructor-arg index="0" value="192.168.25.128"></constructor-arg>

                      <constructor-arg index="1" value="7003"></constructor-arg>

               </bean>

              <bean class="redis.clients.jedis.HostAndPort">

                      <constructor-arg index="0" value="192.168.25.128"></constructor-arg>

                     <constructor-arg index="1" value="7004"></constructor-arg>

             </bean>

             <bean class="redis.clients.jedis.HostAndPort">

                     <constructor-arg index="0" value="192.168.25.128"></constructor-arg>

                     <constructor-arg index="1" value="7005"></constructor-arg>

             </bean>

             <bean class="redis.clients.jedis.HostAndPort">

                       <constructor-arg index="0" value="192.168.25.128"></constructor-arg>

                       <constructor-arg index="1" value="7006"></constructor-arg>

              </bean>

         </set>

      </constructor-arg>

      <constructor-arg index="1" ref="jedisPoolConfig"></constructor-arg>

</bean>

(3)测试集群

private ApplicationContext applicationContext;

       @Before
       public void init() {
              //初始化IOC容器
              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);
}

继续优化

      最好把集群那一套redis服务地址,jedis版本号抽出来等,方便管理!,时刻谨记代码优化!,也许还有更好的封装好的操作redis的代码出现

猜你喜欢

转载自blog.csdn.net/LyySwx/article/details/86914285