Java操作Redis集群

在上一篇文章《Redis集群搭建(3主3从)》中完成了Redis的集群搭建。下面说一下针对该集群的相关操作。


cluster info    查看集群信息



在该集群中

主:192.168.0.203     从:192.168.0.206

主:192.168.0.204     从:192.168.0.207

主:192.168.0.205     从:192.168.0.208

使用redis-cli登录指定的redis服务器,并使用cluster nodes命令查看集群的节点信息
./redis-cli -c -h 192.168.0.203 -p 6379
上述命令中的-c代表是集群,-h 指定redis服务器的IP地址,-p指定redis服务的端口号
cluster nodes



192.168.0.203机器是一个Master节点,执行set name cb 之后,切换到了192.168.0.204 并将其存到slot 5798中。此时,退出redis-cli并重新登录到192.168.0.203的Redis服务,执行keys *  发现为空。但是,执行get name
可以获取name的值,并切换到192.168.0.204 redis服务。


在203的从节点206上,查看name是否存在。登录到206的redis服务之后,查看到redis为空。但是,执行get name
可以获取name的值,并切换到192.168.0.204 redis服务。
redis-cli -c -h 192.168.0.206 -p 6379


在204的从节点207上,登录到其redis服务,查看redis不为空。可以获取name值,同样切换到了204的redis服务上



Redis集群中保存的数据基本会平均分配到3个不同的Master中,分别记录在不同的slot中。整个集群是作为一个整体,对外提供服务。在Java中操作Redis集群,需要关闭各个节点的防火墙。
关闭防火墙
chkconfig iptables off  
查看防火墙状态
chkconfig --list|grep iptables  


分别删除3个Master 203、204、205上的Redis中数据,执行指令flushall

下面代码通过Java操作上述的Redis集群
package com.cb.test;

import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.JedisCluster;
import redis.clients.jedis.JedisPoolConfig;

public class MyRedisCluster {
	public static void main(String[] args) {
		
		Set clusterNodes = new HashSet();
		clusterNodes.add(new HostAndPort("192.168.0.203", 6379));
		clusterNodes.add(new HostAndPort("192.168.0.204", 6379));
		clusterNodes.add(new HostAndPort("192.168.0.205", 6379));
		clusterNodes.add(new HostAndPort("192.168.0.206", 6379));
		clusterNodes.add(new HostAndPort("192.168.0.207", 6379));
		clusterNodes.add(new HostAndPort("192.168.0.208", 6379));
		
		JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
		jedisPoolConfig.setMaxTotal(50);//最大连接个数
		jedisPoolConfig.setMaxIdle(10);//最大空闲连接个数
		jedisPoolConfig.setMaxWaitMillis(-1);//获取连接时的最大等待毫秒数,若超时则抛异常。-1代表不确定的毫秒数
		jedisPoolConfig.setTestOnBorrow(true);//获取连接时检测其有效性 
	    JedisCluster jedisCluster = new JedisCluster(clusterNodes,15000,100,
	    		jedisPoolConfig);//第二个参数:超时时间     第三个参数:最大尝试重连次数	    
	    
	    Map map=new HashMap();
		
	    jedisCluster.set("id", "1");
	    jedisCluster.set("name", "cb");
	    jedisCluster.set("age", "10");
		
	    System.out.println(jedisCluster.get("id"));
	    System.out.println(jedisCluster.get("name"));
	    System.out.println(jedisCluster.get("age"));
	    
		jedisCluster.close();//关闭jedisCluster	
	}
}

控制台输出:


查看redis集群





使用redis-cli 登录192.168.0.206上的redis服务,查询相关信息





你可能感兴趣的:(nosql)