在阿里云上搭建redis高可用集群

释放双眼,带上耳机,听听看~!

为什么要搭建redis集群

Redis是在内存中保存数据的,而我们的电脑一般内存都不大,这也就意味着Redis不适合存储大数据,适合存储大数据的是Hadoop生态系统的Hbase或者是MogoDB。Redis更适合处理高并发,一台设备的存储能力是很有限的,但是多台设备协同合作,就可以让内存增大很多倍,这就需要用到集群。

容错机制-投票

选举过程是集群中所有master参与,如果半数以上master节点与故障节点通信超过(cluster-node-timeout),认为该节点故障,自动触发故障转移操作. 故障节点对应的从节点自动升级为主节点

下面开始安装

(1)安装gcc
Redis 是 c 语言开发的。安装 redis 需要 c 语言的编译环境。如果没有 gcc 需要在线安装。

yum install gcc-c++

(2)使用yum命令安装 ruby (ruby脚本是来实现集群搭建)

yum install ruby

yum install rubygems

(3)然后再创建一个文件夹redis,在redis文件夹中下载redis压缩包

mkdir redis

wget http://download.redis.io/releases/redis-3.2.8.tar.gz

(4)下载后解压,然后进入解压后的redis文件夹编译redis

tar -zxvf redis-3.2.8.tar.gz

make

看到如下图就表示编译成功

在阿里云上搭建redis高可用集群

(5)在redis下创建rediscluster目录,在rediscluster目录下创建redis1至redis6这6个目录
在阿里云上搭建redis高可用集群
(6)在redir1至redis6中分别安装redis实例

make install PREFIX=/usr/local/redis/rediscluster/redis-1 (这是第一个,后面的安装一样)

(7)实例安装完成后,将redis-3.2.8目录下的redis.conf复制到每个redis下的bin目录中

[root@localhost redis-3.2.8]# cp redis.conf /usr/local/redis/rediscluster/redis-1/bin (这是第一个,后面的安装一样)

(8)复制完成后,依次进入到复制的redis.conf中修改运行端口
在阿里云上搭建redis高可用集群
然后再把cluster-enabled yes 前的注释去掉
在阿里云上搭建redis高可用集群
61行注释掉
在阿里云上搭建redis高可用集群
80行yes改为no
在阿里云上搭建redis高可用集群
(9)分别启动每个实例,看到下面图片就是启动成功了,然后分别把另外5个都启动

./redis-server redis.conf

在阿里云上搭建redis高可用集群
(10)查看是否都启动起来了

ps -ef | grep redis

在阿里云上搭建redis高可用集群
(11)上传redis-3.0.0.gem ,安装 ruby用于搭建redis集群的脚本
redis-3.0.0.gem下载

注意:

1.进入redis源码目录中的src目录下执行下面的命令

2.阿里云服务器要开启相应的端口,不然会报Error

./redis-trib.rb create –replicas 1 公网地址:7001 公网地址:7002 公网地址:7003 公网地址:7004 公网地址:7005 公网地址:7006

出现下列信息就行了 M表示主 S表示从
在阿里云上搭建redis高可用集群

(12)最后我们做一个小demo(我用的是idea)

引入依赖


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
1<?xml version="1.0" encoding="UTF-8"?>
2<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
4   <modelVersion>4.0.0</modelVersion>
5   <parent>
6       <groupId>org.springframework.boot</groupId>
7       <artifactId>spring-boot-starter-parent</artifactId>
8       <version>2.2.1.RELEASE</version>
9       <relativePath/> <!-- lookup parent from repository -->
10  </parent>
11  <groupId>com.example.rediscluster</groupId>
12  <artifactId>redisclusterdemo</artifactId>
13  <version>0.0.1-SNAPSHOT</version>
14  <name>redisclusterdemo</name>
15  <description>Demo project for Spring Boot</description>
16
17  <properties>
18      <java.version>1.8</java.version>
19  </properties>
20
21  <dependencies>
22      <dependency>
23          <groupId>org.springframework.boot</groupId>
24          <artifactId>spring-boot-starter-data-redis</artifactId>
25      </dependency>
26      <dependency>
27          <groupId>redis.clients</groupId>
28          <artifactId>jedis</artifactId>
29          <version>2.9.0</version>
30      </dependency>
31      <dependency>
32          <groupId>org.springframework.boot</groupId>
33          <artifactId>spring-boot-starter-web</artifactId>
34      </dependency>
35
36      <dependency>
37          <groupId>org.springframework.boot</groupId>
38          <artifactId>spring-boot-starter-test</artifactId>
39          <scope>test</scope>
40          <exclusions>
41              <exclusion>
42                  <groupId>org.junit.vintage</groupId>
43                  <artifactId>junit-vintage-engine</artifactId>
44              </exclusion>
45          </exclusions>
46      </dependency>
47  </dependencies>
48
49  <build>
50      <plugins>
51          <plugin>
52              <groupId>org.springframework.boot</groupId>
53              <artifactId>spring-boot-maven-plugin</artifactId>
54          </plugin>
55      </plugins>
56  </build>
57
58</project>
59
60
61

然后配置文件

在阿里云上搭建redis高可用集群

最后测试


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
1package com.example.rediscluster.redisclusterdemo;
2
3import org.junit.jupiter.api.Test;
4import org.springframework.beans.factory.annotation.Autowired;
5import org.springframework.boot.test.context.SpringBootTest;
6import org.springframework.data.redis.core.HashOperations;
7import org.springframework.data.redis.core.RedisTemplate;
8
9import static org.junit.jupiter.api.Assertions.*;
10
11
12@SpringBootTest
13public class RedisTest {
14
15  @Autowired
16  private RedisTemplate redisTemplate;
17
18
19  @Test
20  public void test1(){
21      System.out.println(redisTemplate.hasKey("name"));
22      redisTemplate.opsForValue().set("name", "123214");
23      String name = (String) redisTemplate.opsForValue().get("name");
24      System.out.println(name);
25      redisTemplate.opsForValue().set("name2", "123214");
26      String name2 = (String) redisTemplate.opsForValue().get("name");
27      System.out.println(name2);
28      redisTemplate.opsForValue().set("name3", "123214");
29      String name3 = (String) redisTemplate.opsForValue().get("name");
30      System.out.println(name3);
31      redisTemplate.opsForValue().set("name4", "123214");
32      String name4 = (String) redisTemplate.opsForValue().get("name");
33      System.out.println(name4);
34      HashOperations<String, String, String> hashOperations = redisTemplate.opsForHash();
35      hashOperations.put("user", "test", "测试");
36      System.out.println(hashOperations.get("user", "test"));
37  }
38
39}
40
41

步云雷

给TA打赏
共{{data.count}}人
人已打赏
安全运维

OpenSSH-8.7p1离线升级修复安全漏洞

2021-10-23 10:13:25

安全运维

设计模式的设计原则

2021-12-12 17:36:11

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索