Redis集羣搭建過程

本文主要記錄一下Redis集羣的搭建過程

第一步:去Redis官網(https://redis.io/download)下載最新版本的redis的安裝包:redis-5.0.4.tar.gz

第二步:在linux系統中新建一個文件夾(比如ydd),通過xftp工具上傳下載的安裝包到這個文件夾裏面

第三步:進入你上傳的安裝包所在的目錄,解壓文件(命令:tar -zxvf redis-5.0.4.tar.gz)

第四步:進入解壓包(cd  /ydd/redis-5.0.4)進行編譯安裝到指定目錄(make PREFIX=/ydd/redis install),安裝完畢之後 redis文件夾下面會生成一個bin目錄

第五步:這個時候,在/ydd目錄下面,新建一個文件夾,redis-cluster,在這個redis-cluster目錄下面建6個文件夾分別爲7001、7002、7003、7004、7005、7006(我這使用的是端口號)

第六步:把第四步當中的bin目錄分別複製到7001-7006的目錄下面

第七步:這個時候,在7001-7006下面的bin目錄裏面,都缺少一個redis.conf文件。這個時候,去redis-5.0.4目錄下面,有redis.conf文件,分別複製到7001-7006的bin目錄下面

第八步:分別修改7001-7006下面的redis.conf文件。修改三個地方:

port xxxx
cluster-enabled yes 
bind xxx.xxx.xxx.xxx(這裏一定要寫IP,別寫127.0.0.1)

第九步:分別cd到對應目錄下面的bin目錄,然後分別執行下面的啓動命名

注意是分別,就是cd /ydd/redis-cluster/7001/bin 執行第一條命令,cd /ydd/redis-cluster/7002/bin 執行第二條命令,因爲我沒有把redis-server加入到系統的bin目錄下面

/ydd/redis-cluster/7001/bin/redis-server /ydd/redis-cluster/7001/bin/redis.conf
/ydd/redis-cluster/7002/bin/redis-server /ydd/redis-cluster/7002/bin/redis.conf    
/ydd/redis-cluster/7003/bin/redis-server /ydd/redis-cluster/7003/bin/redis.conf    
/ydd/redis-cluster/7004/bin/redis-server /ydd/redis-cluster/7004/bin/redis.conf    
/ydd/redis-cluster/7005/bin/redis-server /ydd/redis-cluster/7005/bin/redis.conf    
/ydd/redis-cluster/7006/bin/redis-server /ydd/redis-cluster/7006/bin/redis.conf

 啓動之後可用下面命令查看是否啓動:ps -ef | grep redis

也可以用下面命名連接到對應的redis上面去:/ydd/redis/bin/redis-cli -h xxx.xxx.xxx.xxx -p 7001

在執行這個命名的時候,可能會出現Permission denied,解決的辦法爲給這個目錄賦予操作權限:sudo chmod -R 777 /ydd

第十步:執行集羣搭建命令,出現下面的畫面代表搭建成功

/ydd/redis/bin/redis-cli --cluster create  
xxx.xxx.xxx.xxx:7001 xxx.xxx.xxx.xxx:7002 
xxx.xxx.xxx.xxx:7003 xxx.xxx.xxx.xxx:7004 
xxx.xxx.xxx.xxx:7005  xxx.xxx.xxx.xxx:7006 
--cluster-replicas 1

 第十一步:構建程序(在這裏使用Spring Boot)去操作Redis集羣

pom.xml文件引入下面依賴:

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
	<groupId>redis.clients</groupId>
	<artifactId>jedis</artifactId>
	<version>2.9.0</version>
</dependency>

Redis配置

# 配置redis集羣信息
# REDIS (RedisProperties)
# Redis數據庫索引(默認爲0)
#spring.redis.database=3
# redis集羣地址信息
spring.redis.cluster.nodes=xxx.xx.xxx.xxx:7001 xxx.xx.xxx.xxx:7002 xxx.xx.xxx.xxx:7003 xxx.xx.xxx.xxx:7004 xxx.xx.xxx.xxx:7005 xxx.xx.xxx.xxx:7006
# Redis服務器連接端口
#spring.redis.port=6379
# Redis服務器連接密碼(默認爲空)
#spring.redis.password=
# 連接池最大連接數(使用負值表示沒有限制)
spring.redis.pool.max-active=20
# 連接池最大阻塞等待時間(使用負值表示沒有限制)
spring.redis.pool.max-wait=-1
# 連接池中的最大空閒連接
spring.redis.pool.max-idle=8
# 連接池中的最小空閒連接
spring.redis.pool.min-idle=0
# 連接超時時間(毫秒)
spring.redis.timeout=5000

建立對應的RedisConfig類

@Configuration
public class RedisConfig {

    private Logger logger = LoggerFactory.getLogger(this.getClass());

    @Value("${spring.redis.cluster.nodes}")
    private String clusterNodes;
    @Value("${spring.redis.timeout}")
    private int timeout;
    @Value("${spring.redis.pool.max-idle}")
    private int maxIdle;
    @Value("${spring.redis.pool.max-wait}")
    private long maxWaitMillis;
    @Value("${spring.redis.timeout}")
    private int commandTimeout;

    @Bean
    public JedisCluster getJedisCluster() {
        String[] cNodes = clusterNodes.split(",");
        Set<HostAndPort> nodes =new HashSet<>();
        //分割出集羣節點
        for(String node : cNodes) {
            String[] hp = node.split(":");
            nodes.add(new HostAndPort(hp[0],Integer.parseInt(hp[1])));
        }
        JedisPoolConfig jedisPoolConfig =new JedisPoolConfig();
        jedisPoolConfig.setMaxIdle(maxIdle);
        jedisPoolConfig.setMaxWaitMillis(maxWaitMillis);
        //創建集羣對象
        JedisCluster jedisCluster = new JedisCluster(nodes,commandTimeout);
        logger.info("連接redis集羣成功");
        return jedisCluster;
    }

}

在需要使用的類當中,注入JedisCluster進行Redis集羣操作

 @Autowired
 private JedisCluster jedisCluster;

 jedisCluster.set("userName", "hello redis cluster");
 jedisCluster.get("userName");

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章