1. 程式人生 > >Redis(7)-----初識Redis-----客戶端對Redis叢集的使用方法

Redis(7)-----初識Redis-----客戶端對Redis叢集的使用方法

記得連結之前關閉防火牆,或者把本埠號新增到防火牆例外

[[email protected]0723 bin]# service iptables stop
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080
-j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 6379 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 6380 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 7001 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 7002 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 7003
-j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 7004 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 7005 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 7006 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT
~ "/etc/sysconfig/iptables" 22L, 1079C 已寫入 [[email protected]-0723 bin]# service iptables restart iptables:應用防火牆規則: [確定] [[email protected]-0723 bin]#

 

一,使用redis命令列客戶端連線

[[email protected] redis-cluster]# ./redis1/redis-cli -p 7001 -c

127.0.0.1:7001> get a

-> Redirected to slot [15495] located at 192.168.37.131:7003

(nil)

192.168.37.131:7003> 

一定要加-c引數,節點之間就可以互相跳轉

二,使用jedis連線

2.1,建立JedisCluster類連線redis叢集。

 

package com.pc.jedis.test;

 

import java.util.HashSet;

import java.util.Set;

 

import redis.clients.jedis.HostAndPort;

import redis.clients.jedis.JedisCluster;

 

/**

 * Jedis叢集測試

 * 

 * @author Switch

 * @data 2017年2月11日

 * @version V1.0

 */

public class JedisClusterTest {

    public static void main(String[] args) {

        // 建立並填充節點資訊

        Set<HostAndPort> nodes = new HashSet<>();

        nodes.add(new HostAndPort("192.168.37.131", 7001));

        nodes.add(new HostAndPort("192.168.37.131", 7002));

        nodes.add(new HostAndPort("192.168.37.131", 7003));

        nodes.add(new HostAndPort("192.168.37.131", 7004));

        nodes.add(new HostAndPort("192.168.37.131", 7005));

        nodes.add(new HostAndPort("192.168.37.131", 7006));

 

        // 建立JedisCluster物件

        JedisCluster jedisCluster = new JedisCluster(nodes);

 

        // 使用jedisCluster操作redis

        String key = "jedisCluster";

        String setResult = jedisCluster.set(key, "hello redis!");

        System.out.println(setResult);

 

        String getResult = jedisCluster.get(key);

        System.out.println(getResult);

 

        // 關閉jedisCluster(程式執行完後才能關閉,內部封裝了連線池)

        jedisCluster.close();

    }

}

 

 

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

 

kkk