redis集群安装配置 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方式的配置
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"xsi:schemaLocation=" > <!-- Jedis链接池配置,
注意:Jedis版本建议升级到最新 -->
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"><property name="maxTotal" value="100" /><property name="maxIdle" value="20" /><property name="minIdle" value="10" /><property name="blockWhenExhausted" value="true"></property><property name="maxWaitMillis" value="3000" /><property name="testOnBorrow" value="false" /><property name="testOnReturn" value="false" /><property name="testWhileIdle" value="true" /><property name="minEvictableIdleTimeMillis" value="60000" /><property name="timeBetweenEvictionRunsMillis" value="30000" /><property name="numTestsPerEvictionRun" value="-1" /></bean> <!-- JedisCluster --><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.1.111" /><constructor-arg index="1" value="7111" type="int" /></bean><bean class="redis.clients.jedis.HostAndPort"><constructor-arg index="0" value="192.168.1.112" /><constructor-arg index="1" value="7112" type="int" /></bean><bean class="redis.clients.jedis.HostAndPort"><constructor-arg index="0" value="192.168.1.113" /><constructor-arg index="1" value="7113" type="int" /></bean><bean class="redis.clients.jedis.HostAndPort"><constructor-arg index="0" value="192.168.1.114" /><constructor-arg index="1" value="7114" type="int" /></bean><bean class="redis.clients.jedis.HostAndPort"><constructor-arg index="0" value="192.168.1.115" /><constructor-arg index="1" value="7115" type="int" /></bean><bean class="redis.clients.jedis.HostAndPort"><constructor-arg index="0" value="192.168.1.116" /><constructor-arg index="1" value="7116" type="int" /></bean></set></constructor-arg><constructor-arg index="1" value="2000" type="int"></constructor-arg><constructor-arg index="2" value="100" type="int"></constructor-arg><constructor-arg index="3" ref="jedisPoolConfig"></constructor-arg></bean> </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;
}
本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。