zoukankan      html  css  js  c++  java
  • 使用jedisCluster操作Redis集群

    连接单机版
    第一步:创建一个Jedis对象。需要指定服务端的ip及端口。
    第二步:使用Jedis对象操作数据库,每个redis命令对应一个方法。
    第三步:打印结果。
    第四步:关闭Jedis
    @Test
     
    public void testJedis()throws Exception { 
    // 第一步:创建一个Jedis对象。需要指定服务端的ip及端口。 
    Jedis jedis =new Jedis("192.168.25.153", 6379);
     
    // 第二步:使用Jedis对象操作数据库,每个redis命令对应一个方法。
     
    String result =jedis.get("hello");
     
    // 第三步:打印结果。
     
    System.out.println(result);
     
    // 第四步:关闭Jedis
     
    jedis.close();
     
    }
     
    接单机版使用连接池
    第一步:创建一个JedisPool对象。需要指定服务端的ip及端口。
    第二步:从JedisPool中获得Jedis对象。
    第三步:使用Jedis操作redis服务器。
    第四步:操作完毕后关闭jedis对象,连接池回收资源。
    第五步:关闭JedisPool对象。
    @Test
     
    public void testJedisPool()throws Exception {
     
    // 第一步:创建一个JedisPool对象。需要指定服务端的ip及端口。
     
    JedisPool jedisPool = new JedisPool("192.168.25.153", 6379);
     
    // 第二步:从JedisPool中获得Jedis对象。
     
    Jedis jedis = jedisPool.getResource();
     
    // 第三步:使用Jedis操作redis服务器。
     
    jedis.set("jedis","test");
     
    String result = jedis.get("jedis");
     
    System.out.println(result);
     
    // 第四步:操作完毕后关闭jedis对象,连接池回收资源。
     
    jedis.close();
     
    // 第五步:关闭JedisPool对象。
     
    jedisPool.close();
     
    }
     
    连接集群版
    第一步:使用JedisCluster对象。需要一个Set<HostAndPort>参数。Redis节点的列表。
    第二步:直接使用JedisCluster对象操作redis。在系统中单例存在。
    第三步:打印结果
    第四步:系统关闭前,关闭JedisCluster对象。
    // 连接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整合
    配置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>
    测试代码
    private ApplicationContextapplicationContext;
     
     
    @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); 
    }
  • 相关阅读:
    osip2 代码分析
    批处理命令——call 和 start
    在VS2010 VC++项目中引用Lib静态库(以Openssl为例)
    Gerrit 代码审核服务器的工作流和原理
    crucible VS gerrit
    领导者/追随者(Leader/Followers)模型和半同步/半异步(half-sync/half-async)模型都是常用的客户-服务器编程模型
    半同步半异步I/O的设计模式(half sync/half async)
    高并发系统设计
    通过Nginx反向代理之后客户端验证码session不一致造成无法验证通过的问题解决
    使用Nodpad++正则替换
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13317454.html
Copyright © 2011-2022 走看看