CentOS7下Redis集群搭建
阅读原文时间:2021年04月20日阅读:1

一、引言

工作中经常会用到Redis,下面在CentOs7上,搭建一个Redis集群。

二、安装Redis

1、查询系统版本

不同的系统版本,Linux的命令有所差别。

cat /etc/centos-release

2、下载Redis

Redis官网地址:https://redis.io/download

在哪个目录下,执行wget操作,文件就会下载到哪个目录。

cd  /home/frank/redis/

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

3、解压
tar -xzvf redis-5.0.4.tar.gz


4、安装C语言环境

因为Redis使用C语言写的,CentOS自带C语言环境,执行以下命令会更新C语言环境

yum install gcc-c++

5、编译Redis源码
cd redis-5.0.4
make

6、安装Redis

默认安装在当前目录下,可以使用PREFIX参数更改安装位置

cd redis-5.0.4
make install PREFIX=/home/frank/redis/reids

7、将解压缩包下的Redis配置文件redis.conf拷贝到安装目录的bin目录下。(每一个Redis对应着一个配置文件)
cp ./redis.conf ../redis/bin

8、进入到安装目录,启动Redis
./redis-server ./redis.conf

9、测试

建一个Maven工程,添加如下依赖

 <dependency>
      <groupId>redis.clients</groupId>
      <artifactId>jedis</artifactId>
      <version>3.0.1</version>
</dependency>


public static void main( String[] args ) {

    //方式一
    Jedis jedis = new Jedis("192.168.2.230",6379);
    jedis.set("hello","world");
    String value = jedis.get("hello");
    System.out.println(value);
    jedis.close();

    //方式二:线程池
    JedisPool pool = new JedisPool("192.168.2.230",6379);
    Jedis jedis = pool.getResource();
    String value = jedis.get("hello");
    System.out.println(value);
    jedis.close();
}

运行上面代码,可能报下面的错,这是因为系统的防火墙没有关闭

Centos7关闭防火墙

    systemctl stop firewalld.service

禁止firewall开机启动

    systemctl disable firewalld.service

关闭防火墙后,重新运行后,结果如下:

10、关闭Redis

三、搭建Redis集群(伪集群)

搭建集群最少也得需要3台主机,如果每台主机再配置一台从机的话,则最少需要6台机器,准备6个redis

1、准备6个Redis,并逐一修改其配置文件

为了方便记忆,6个Redis的安装目录分别从6661-6666

2、逐一修改其配置文件

修改每个Redis绑定的Ip地址

修改每个Redis的端口地址,分别从6661-6666

把每个Redis的集群设置打开

把每个Redis改为后台运行

逐一启动Redis


查看Redis的运行状态

ps -ef|grep redis

3、将6个Redis加入一个集群
./redis-trib.rb create --replicas 1 192.168.2.230:6661 192.168.2.230:6662 192.168.2.230:6663
 192.168.2.230:6664 192.168.2.230:6665 192.168.2.230:6666

运行上面命令后,出现如下报错,说明缺少Ruby环境。

4、安装Ruby
yum install ruby


yum install rubygems

再次执行上面集群命令

5、测试
public static void main( String[] args )
    {
        //集群
        Set<HostAndPort> nodes = new HashSet<>();
        nodes.add(new HostAndPort("192.168.2.230",6661));
        nodes.add(new HostAndPort("192.168.2.230",6662));
        nodes.add(new HostAndPort("192.168.2.230",6663));
        nodes.add(new HostAndPort("192.168.2.230",6664));
        nodes.add(new HostAndPort("192.168.2.230",6665));
        nodes.add(new HostAndPort("192.168.2.230",6666));

        JedisCluster cluster = new JedisCluster(nodes);

        cluster.set("cluster","我们六个人");

        String value = cluster.get("cluster");
        System.out.println(value);