Redis集群的配置及使用

一、安装redis
1.下载redis到linux下
wget http://download.redis.io/releases/redis-3.2.8.tar.gz
2.解压redis
 tar -zxvf redis-3.2.8.tar.gz
3.编译安装redis
①进入redis目录下执行'make'命令
②若提示 gcc:命令未找到错误,则需要安装gcc:
yum install gcc
③进入src目录下,执行如下命令:
make install PREFIX=/usr/local/redis

二、配置redis集群
1.在/usr/local下创建redis-cluster文件夹,在redis-cluster中创建7001、7002、7003、7004、7005、7006共六个文件夹
2.在各自的文件夹下配置各自的redis.conf文件
①修改bind为实际ip地址
②修改port为对应的端口号(如果redis在不同的机器上,port可以不用修改)
③修改pidfile(如果实在不同的机器上,可以不用修改)
④修改dir(如果实在不同的机器上,可以不用修改)
⑤设置cluster-enabled为yes
⑥修改cluster-config-file(如果实在不同的机器上,可以不用修改)
3.启动所有的redis实例
bin/redis-server 700*/redis.conf

4.安装ruby
yum install ruby rubygems
gem install redis
5.创建集群
bin/redis-trib.rb create --replicas 1 192.168.0.111:7001 192.168.0.111:7002 192.168.0.111:7003 192.168.0.111:7004 192.168.0.111:7005 192.168.0.111:7006

6.查看集群状态
bin/redis-cli -c -h 192.168.0.111 -p 7001 //随机进入一个redis节点中
cluster info //查看集群信息
cluster nodes //查看节点信息


7.集群的增减节点
①增加主节点
redis-trib.rb add-node 192.168.0.111:7007 192.168.0.111:7001
redis-trib.rb reshard 192.168.0.111:7001 //重新分配slot槽
②增加从节点
redis-trib.rb add-node 192.168.0.111:7008 192.168.0.111:7001
redis-cli -c -h 192.168.0.111 -p 7008 //进入7008这个节点
cluster replicate <master节点id>
③移除从节点
redis-trib.rb del-node 192.168.0.111:7008 <7008节点id>
④移除主节点
redis-trib.rb reshard 192.168.0.111:7007 //从新分配slot槽
redis-trib.rb del-node 192.168.0.111:7007 <7007节点id> //移除节点

8.在spring代码中使用redis
①基于xml方式的配置
  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>  

②基于javaConfig的配置
package com.aliyun.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.JedisCluster;
import redis.clients.jedis.JedisPoolConfig;

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

/**
 * 
 */
@Configuration
public class JedisConfig {

    @Bean
    public JedisPoolConfig poolConfig() {
        JedisPoolConfig poolConfig = new JedisPoolConfig();
        poolConfig.setMinIdle(10);
        poolConfig.setMaxIdle(20);
        poolConfig.setMaxTotal(100);
        poolConfig.setMaxWaitMillis(3000);
        poolConfig.setBlockWhenExhausted(true);
        poolConfig.setTestOnBorrow(false);
        poolConfig.setTestOnReturn(false);
        poolConfig.setTestWhileIdle(true);
        poolConfig.setMinEvictableIdleTimeMillis(60000);
        poolConfig.setTimeBetweenEvictionRunsMillis(30000);
        poolConfig.setNumTestsPerEvictionRun(-1);
        return poolConfig;
    }

    @Bean
    public JedisCluster jedisCluster() {
        Set<HostAndPort> nodes = new HashSet<HostAndPort>();
        nodes.add(new HostAndPort("192.168.188.130", 7001));
        nodes.add(new HostAndPort("192.168.188.130", 7002));
        nodes.add(new HostAndPort("192.168.188.130", 7003));
        nodes.add(new HostAndPort("192.168.188.130", 7004));
        nodes.add(new HostAndPort("192.168.188.130", 7005));
        nodes.add(new HostAndPort("192.168.188.130", 7006));
        nodes.add(new HostAndPort("192.168.188.130", 7007));
        nodes.add(new HostAndPort("192.168.188.130", 7008));
        JedisCluster cluster = new
                JedisCluster(nodes, 2000, 100, poolConfig());
        return cluster;
    }

}

③测试

@Autowired
private JedisCluster jedisCluster;



@GetMapping("/testRedis")
@ResponseBody
public String testRedis() {
    String name = jedisCluster.get("name");
    return name;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值