redis:redis cluster集群主从方案

http://wosyingjun.iteye.com/blog/2289220

Redis的安装以及cluster配置

下载redis最新的安装包
wget http://download.redis.io/releases/redis-3.0.7.tar.gz
解压
tar xzf redis-3.0.7.tar.gz 
安装支持包tcl
yum install tcl 编译原文件
make
创建集群相关文件(方便管理)
mkdir cluster 
cd cluster
mkdir 6379 6380 6381 6382 6383 6384 
cluster下面每个目录中都创建一个redis.conf文件. 注意修改文件中的端口号:

port 6379
cluster-enabled yes
cluster-config-file nodes_6379.conf
cluster-node-timeout 5000
appendonly yes

把redis-server的可执行文件复制到cluster下面的各个目录, 然后打开6个shell终端,进入各个目录,启动每个实例, 命令如下: 
./redis-server redis.conf

 

搭建集群
./redis-trib.rb create --replicas 1 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384

–replicas 1 表示我们希望为集群中的每个主节点创建一个从节点。
此时报错,发现缺少相应的ruby环境,如下安装相应环境:
yum install ruby
yum install rubygems
gem install redis

安装好环境后再次搭建集群
./redis-trib.rb create --replicas 1 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 

 

检测集群节点相关信息 
./redis-trib.rb check 127.0.0.1:6379 

 

进入某个节点验证
./redis-cli -c -h 127.0.0.1 -p 6379

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"  
  4.     xsi:schemaLocation="  
  5.         http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">  
  6.   
  7.     <!-- Jedis链接池配置,注意:Jedis版本建议升级到最新 -->  
  8.     <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">  
  9.         <property name="maxTotal" value="100" />  
  10.         <property name="maxIdle" value="20" />  
  11.         <property name="minIdle" value="10" />  
  12.         <property name="blockWhenExhausted" value="true"></property>  
  13.         <property name="maxWaitMillis" value="3000" />  
  14.         <property name="testOnBorrow" value="false" />  
  15.         <property name="testOnReturn" value="false" />  
  16.         <property name="testWhileIdle" value="true" />  
  17.         <property name="minEvictableIdleTimeMillis" value="60000" />  
  18.         <property name="timeBetweenEvictionRunsMillis" value="30000" />  
  19.         <property name="numTestsPerEvictionRun" value="-1" />  
  20.     </bean>  
  21.   
  22.     <!-- JedisCluster -->  
  23.     <bean id="jedisCluster" class="redis.clients.jedis.JedisCluster">  
  24.         <constructor-arg index="0">  
  25.             <set>  
  26.                 <bean class="redis.clients.jedis.HostAndPort">  
  27.                     <constructor-arg index="0" value="192.168.1.111" />  
  28.                     <constructor-arg index="1" value="7111" type="int" />  
  29.                 </bean>  
  30.                 <bean class="redis.clients.jedis.HostAndPort">  
  31.                     <constructor-arg index="0" value="192.168.1.112" />  
  32.                     <constructor-arg index="1" value="7112" type="int" />  
  33.                 </bean>  
  34.                 <bean class="redis.clients.jedis.HostAndPort">  
  35.                     <constructor-arg index="0" value="192.168.1.113" />  
  36.                     <constructor-arg index="1" value="7113" type="int" />  
  37.                 </bean>  
  38.                 <bean class="redis.clients.jedis.HostAndPort">  
  39.                     <constructor-arg index="0" value="192.168.1.114" />  
  40.                     <constructor-arg index="1" value="7114" type="int" />  
  41.                 </bean>  
  42.                 <bean class="redis.clients.jedis.HostAndPort">  
  43.                     <constructor-arg index="0" value="192.168.1.115" />  
  44.                     <constructor-arg index="1" value="7115" type="int" />  
  45.                 </bean>  
  46.                 <bean class="redis.clients.jedis.HostAndPort">  
  47.                     <constructor-arg index="0" value="192.168.1.116" />  
  48.                     <constructor-arg index="1" value="7116" type="int" />  
  49.                 </bean>  
  50.             </set>  
  51.         </constructor-arg>  
  52.         <constructor-arg index="1" value="2000" type="int"></constructor-arg>  
  53.         <constructor-arg index="2" value="100" type="int"></constructor-arg>  
  54.         <constructor-arg index="3" ref="jedisPoolConfig"></constructor-arg>  
  55.     </bean>  
  56.   
  57. </beans>  

 

Java代码   收藏代码
  1. package wusc.edu.demo.redis;  
  2.   
  3. import org.apache.commons.logging.Log;  
  4. import org.apache.commons.logging.LogFactory;  
  5. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  6.   
  7. import redis.clients.jedis.JedisCluster;  
  8.   
  9.   
  10. public class RedisClusterSpringTest {  
  11.     private static final Log log = LogFactory.getLog(RedisClusterSpringTest.class);  
  12.   
  13.     public static void main(String[] args) {  
  14.         try {  
  15.             ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring/spring-context.xml");  
  16.             context.start();  
  17.               
  18.             JedisCluster jedisCluster = (JedisCluster) context.getBean("jedisCluster");  
  19.             int num = 1000;  
  20.             String key = "yingjun";  
  21.             String value = "";  
  22.             for (int i=1; i <= num; i++){  
  23.                 // 存数据  
  24.                 //jedisCluster.set(key+i, "yingjun"+i);  
  25.                 //jedisCluster.setex(key+i, 60, "yingjun"+i);  
  26.                   
  27.                 // 取数据  
  28.                 value = jedisCluster.get(key+i);   
  29.                 log.info(key+i + "=" + value);  
  30.                   
  31.                 // 删除数据  
  32.                 //jedisCluster.del(key+i);   
  33.                 //value = jedisCluster.get(key+i);   
  34.                 //log.info(key+i + "=" + value);  
  35.             }  
  36.   
  37.             context.stop();  
  38.         } catch (Exception e) {  
  39.             log.error("==>RedisSpringTest context start error:", e);  
  40.             System.exit(0);  
  41.         } finally {  
  42.             log.info("===>System.exit");  
  43.             System.exit(0);  
  44.         }  
  45.     }  
  46. }  

猜你喜欢

转载自samson870830.iteye.com/blog/2326024