redis集群搭建

Posted 巅峰小学生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis集群搭建相关的知识,希望对你有一定的参考价值。

redis集群搭建(伪集群)

说明

redis-cluster是redis3.0才有的东西,集群的理解就是将redis部署在不同的服务器上从而组成一个redis群,而伪集群就是不将redis部署在不同的服务器上,意思就是将所有的redis部署在同一台服务器上,将其配置成不同的端口来组成的集群(不管是伪集群还是真正的集群配置都是大同小异)

 

redis安装需要gcc编译器

redis文件方式启动需要在redis.conf中修改其启动方式参数

集群搭建

 

搭建集群准备工作

注意:虽然是伪集群,但和真集群的配置方式是一样的,只是现在在同一天服务器上配置而已。

 

需要做的事情:

  1. 创建一个redis-cluster文件夹用于存放redis(伪集群才需要这一步)
  2. 将redis复制n份(这次模拟使用6份来去做,3个是准节点,另外3个是备份节点,端口号7001-7006),到该文件夹中,并开启集群功能和设置不同的端口号(伪集群才需要这一步)

 

【步骤1】创建redis-cluster文件夹,将原redis开启集群功能

 

>>创建redis-cluster文件夹(目前实践目录在usr/local做)

命令:mkdir redis-cluster

 

 

>>进入原redis bin目录将其开启集群功能

命令:rm -rf dump.rdb 删除该文件

 

 

 

【步骤2】将其开启了集群功能的redis复制多分到redis-cluster文件夹中,并为其设置不同的端口号(这次模拟使用6份来去做,3个是准节点,另外3个是备份节点,端口号7001-7006

 

>>将原redis复制多分到redis-cluster文件夹中

 

 

>>修改每一份redis的端口号(这里从redis02开始,redis01在开启集群功能是已将其port修改成了7001)

 

 

 

 

 

【步骤3-启动脚本(不是必要)】编写脚本文件,使用脚本文件来去启动这6个redis服务

 

>>在redis-cluster文件夹下创建一个startall.sh脚本文件,并编写其启动脚本(其实就是写linux命令),加入以下命令

脚本:

cd redis01/bin/

./redis-server redis.conf

cd ../..

cd redis02/bin/

./redis-server redis.conf

cd ../..

cd redis03/bin/

./redis-server redis.conf

cd ../..

cd redis04/bin/

./redis-server redis.conf

cd ../..

cd redis05/bin/

./redis-server redis.conf

cd ../..

cd redis06/bin/

./redis-server redis.conf

cd ../..

 

 

 

>>创建并编写好后是运行不了该文件的,还需要为改文件添加运行权限

 

 

>>运行该文件并查看是否运行成功

 

【步骤4-停止脚本(不是必要)】

cd redis01/bin/

./redis-cli -p 7001 shutdown

cd ../..

cd redis02/bin/

./redis-cli -p 7002 shutdown

cd ../..

cd redis03/bin/

./redis-cli -p 7003 shutdown

cd ../..

cd redis04/bin/

./redis-cli -p 7004 shutdown

cd ../..

cd redis05/bin/

./redis-cli -p 7005 shutdown

cd ../..

cd redis06/bin/

./redis-cli -p 7006 shutdown

cd ../..

 

 

 

集群环境配置

ruby基本介绍

 

【步骤1】使用ruby脚本搭建集群。需要ruby的运行环境。安装ruby

yum install ruby

yum install rubygems

如果yum安装报错,可能是网络问题,要确定当前虚拟机是否能上网,nat和host-only模式网络配置请参考linux笔记

 

 

【步骤2】安装ruby脚本运行使用的包(将其redis-3.0.0.gem上传到linux上在做下面操作)。

gem install redis-3.0.0.gem

 

cd /usr/local/redis-src/redis-3.0.0/src (注意,该文件在redis源里面)

将其复制到集群文件夹根目录中

如下:

【步骤3】执行ruby脚本

第一步:首先启动每个redis实例

第二步:使用ruby脚本搭建集群,执行ruby脚本搭建集群

以下是当前测试虚拟机ip

./redis-trib.rb create --replicas 1 192.168.25.134:7001 192.168.25.134:7002 192.168.25.134:7003 192.168.25.134:7004 192.168.25.134:7005 192.168.25.134:7006

 

  • 执行结果如下:

》》执行ruby脚本

》》输入yes后确认就会开始根据ruby脚本来去搭建redis-cluster

 

集群的连接和数据的存取(内置客户端)

  • 使用随便一个redis来去测试集群的连接,这里选用redis01的客户端进行连接测试

  • 注意:可以看出插入数据的时候并不是直接插入到7006这个redis中的,而是跳到了7002中插入,因为7006在这次配置中是作为从节点存在的,而从节点只作数据的备份

 

 

 

 

集群信息查看

  • 命令:cluster info

 

  • 命令:cluster nodes

 

 

 

 

 

Jedis测试集群-集群的连接和数据的存取

    /**

     * Jedis集群连接

     * 注意:如果测试不成功请尝试关闭虚拟机防火墙

     * @throws Exception

     */

    @Test

    public void testConnCluster() throws Exception{

//        创建一个JedisCluster对象

        Set<HostAndPort> set = new HashSet<>(); //填写redis集群的各个redis信息

        set.add( new HostAndPort("192.168.25.134", 7001) );

        set.add( new HostAndPort("192.168.25.134", 7002) );

        set.add( new HostAndPort("192.168.25.134", 7003) );

        set.add( new HostAndPort("192.168.25.134", 7004) );

        set.add( new HostAndPort("192.168.25.134", 7005) );

        set.add( new HostAndPort("192.168.25.134", 7006) );

        JedisCluster jedisCluster = new JedisCluster(set);

        

//        使用jedisCluster操作Redis,jedisCluster自带连接池且该对象可以是单例的(表示在系统关闭前才关闭也可以)

        jedisCluster.set("name1", "zhangsan");

        String name = jedisCluster.get("name1");

        System.out.println(name);

        

        jedisCluster.close();

    }

 

以上是关于redis集群搭建的主要内容,如果未能解决你的问题,请参考以下文章

Redis Cluster集群的搭建

Redis实战-Redis集群环境搭建(自动搭建)

Redis实战-Redis集群环境搭建(自动搭建)

一般Redis集群搭建采用几台服务器?

redis集群搭建怎么分配内存的

Redis Cluster基于Docker的集群搭建