*福音*阿里云redis5.0.*集群搭建及java代码测试详细(终于不用ruby了)

redis 5.0版本 集群搭建不需要我们安装ruby就可以搭建成功,并且redis给我们提供了快速搭建脚本,执行utils/create-cluster/ 目录下的create-cluster脚本 就可以快速搭建,该脚本提供以下几个命令供我们使用

1、下载安装redis

$ wget http://download.redis.io/releases/redis-5.0.5.tar.gz
$ tar xzf redis-5.0.5.tar.gz
$ cd redis-5.0.5
$ make 
$ make install

2、端口开启,需要开启7001-7006和17001-17006(具体情况看你自己需要开启哪些,图片中的不想相干端口开不开都行)这一步先做也行后做也可以,反正都要开,不如早点开了
*福音*阿里云redis5.0.*集群搭建及java代码测试详细(终于不用ruby了)_第1张图片
*福音*阿里云redis5.0.*集群搭建及java代码测试详细(终于不用ruby了)_第2张图片
3、脚本修改
要想外部服务器访问到我们搭建的集群,我们需要对脚本修改一下:

*福音*阿里云redis5.0.*集群搭建及java代码测试详细(终于不用ruby了)_第3张图片
start部分增加如下配置

–bind 指定我们要绑定的ip(服务器ip) --requirepass 指定我们的密码 --protected-mode no 关闭安全模式(外部应用可以连接到redis)
在这里插入图片描述
create 部分 修改如下:
*福音*阿里云redis5.0.*集群搭建及java代码测试详细(终于不用ruby了)_第4张图片
stop 部分 修改如下:
*福音*阿里云redis5.0.*集群搭建及java代码测试详细(终于不用ruby了)_第5张图片
修改后保存

然后在utils/create-cluster目录下执行./create-cluster start
并用 ps -ef|grep redis查看redis集群是否启动成功,如图所示就启动好了
*福音*阿里云redis5.0.*集群搭建及java代码测试详细(终于不用ruby了)_第6张图片
然后执行 ./create-cluster create,出现以下界面就证明集群基本部署成功了(主要是主备分配,分槽等操作完成,个人理解就是这个操作替换了低版本的ruby手动分槽什么的),记住输入“yes”,不要输入“y”
*福音*阿里云redis5.0.*集群搭建及java代码测试详细(终于不用ruby了)_第7张图片
任意取一个节点测试:这样则证明集群部署完成
*福音*阿里云redis5.0.*集群搭建及java代码测试详细(终于不用ruby了)_第8张图片
如果还不放心可以使用 cluster nodes 和 cluster info 查看集群信息,可以看到主备已经分好,状态也是 “ok”,那就集群肯定没问题
在这里插入图片描述
*福音*阿里云redis5.0.*集群搭建及java代码测试详细(终于不用ruby了)_第9张图片

使用RedisDesktopManager工具测试连接(这个工具很垃圾,点多了或者什么的就卡死,没办法,谁让他免费呢,改天自己写一个…)
*福音*阿里云redis5.0.*集群搭建及java代码测试详细(终于不用ruby了)_第10张图片
工具可以连接上证明代码也可以连接,但是这块卡了我好久,本来只是想写一个测试类,测一下连接,但是从网上找的代码都是那一套,把所有端口都加进去,但是一直爆“redis Could not get a resource from the pool”或者其他问题,然后我就按着网上的解决办法改啊改,好几天没进展(单机版可以ping通,但是set不进去值,也get不到值)
最后好奇的改了一下代码,代码如下:

public static void main(String[] args) {
        GenericObjectPoolConfig config = new GenericObjectPoolConfig();
        // 最大连接数
        config.setMaxTotal(8);
        // 最大空闲数
        config.setMaxIdle(100);
        // 最大允许等待时间,如果超过这个时间还未获取到连接,则会报JedisException异常:
        // Could not get a resource from the pool
        config.setMaxWaitMillis(7000);
        HostAndPort hostAndPort1 = new HostAndPort("**.**.**.***", 7001);
//        HostAndPort hostAndPort2 = new HostAndPort("**.**.**.***", 7002);
//        HostAndPort hostAndPort3 = new HostAndPort("**.**.**.***", 7003);
//        HostAndPort hostAndPort4 = new HostAndPort("**.**.**.***", 7004);
//        HostAndPort hostAndPort5 = new HostAndPort("**.**.**.***", 7005);
//        HostAndPort hostAndPort6 = new HostAndPort("**.**.**.***", 7006);
        Set hostAndPortSet = new HashSet<>();
        hostAndPortSet.add(hostAndPort1);
//        hostAndPortSet.add(hostAndPort2);
//        hostAndPortSet.add(hostAndPort3);
//        hostAndPortSet.add(hostAndPort4);
//        hostAndPortSet.add(hostAndPort5);
//        hostAndPortSet.add(hostAndPort6);
        JedisCluster jedis = new JedisCluster(hostAndPortSet,1000,30,3,"madong123",config);
        jedis.setnx("test2", "000000");
        System.out.println(jedis.get("000000"));
        try {
            jedis.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

结果:
*福音*阿里云redis5.0.*集群搭建及java代码测试详细(终于不用ruby了)_第11张图片
到此,懂得人都明白,redis集群部署和应用算是告一段落

你可能感兴趣的:(redis)