• redis5.0.4-cluster集群搭建及jedis客户端操作


    一、去官网下载redis5.0

    https://redis.io/download

    然后解压安装

    $ tar xzf redis-5.0.4.tar.gz
    $ cd redis-5.0.4
    $ make

     二、准备配置文件

    打开redis-5.0.4/目录中的redis.conf文件,也就是redis的配置文件

    1.注释掉本行配置,否则客户端连接会报错

     2.修改端口为6381(后面还需要复制出来5个配置文件,6个配置文件端口分别从6381到6386)

    3.修改启动方式为后台启动

     4.这里文件名改成和端口一致

    5.重要!打开三项cluster集群配置开关!

    6.配置redis服务器密码,不配的话jedis连接会报如下错误:

    redis.clients.jedis.exceptions.JedisDataException: DENIED Redis is running in protected mode because protected mode is enabled, no bind address was specified, no authentication password is requested to clients.

    7.保存退出,重命名配置文件,和第5步中的配置保持一致

    这个不改也可以,我是为了看上去知道是集群配置文件,才重命名的

    8.将node-6381.conf文件再复制5份,并分别重命名

    9.在复制出来的5份配置文件中,分别更改第2,4,5步中和端口相关的内容

     三、启动集群

    进入src/目录

    1.依次启动6个节点的redis

    2.执行集群启动命令

    注意,命令随后有个“-a admin”,这里是输入刚才设置的密码,否则无法创建集群

    而且ip不能输入127.0.01,否则客户端无法连接

    ./redis-cli --cluster create 10.100.93.44:6381 10.100.93.44:6382 10.100.93.44:6383 10.100.93.44:6384 10.100.93.44:6385 10.100.93.44:6386 --cluster-replicas 1 -a admin

    中间需要输入一个“yes”

    到这里,redis5.0的cluster集群就创建完成了,从中也能看到,6381,6382,6383节点是主节点

    四、Jedis客户端操作

    我这里采用的jedis版本是:

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

    客户端代码:

        public static void main(String[] args) {
    
            Set<HostAndPort> jedisClusterNodes = new HashSet<>();
            //Jedis Cluster will attempt to discover cluster nodes automatically
            jedisClusterNodes.add(new HostAndPort("10.100.93.44", 6381));
            jedisClusterNodes.add(new HostAndPort("10.100.93.44", 6382));
            jedisClusterNodes.add(new HostAndPort("10.100.93.44", 6383));
            jedisClusterNodes.add(new HostAndPort("10.100.93.44", 6384));
            jedisClusterNodes.add(new HostAndPort("10.100.93.44", 6385));
            jedisClusterNodes.add(new HostAndPort("10.100.93.44", 6386));
    
            JedisPoolConfig jpc = new JedisPoolConfig();
            jpc.setMaxTotal(10);
            jpc.setMaxIdle(10);
            jpc.setMinIdle(10);
    
            JedisCluster jc = new JedisCluster(jedisClusterNodes, 5000, 5000, 2, "admin", jpc);
            jc.set("dijia478", "112233");
    
            String keys = jc.get("dijia478");
            System.out.println(keys);
    
        }

    运行结果:

    redis集群情况:

    可以看到,测试的一个key,已经插入到了6383节点了。

    测试demo:https://github.com/dijia478/redis5-cluster-client

  • 相关阅读:
    知乎神回复:代码之间为什么要加空格?这个问题我是这样理解的!
    经验分享:一个 30 岁的人是如何转行做程序员,进入IT行业的?
    对于程序员来说,学历真的重要吗?为何都是高学历混的风生水起?
    教材、教参、教案有哪些区别?
    教参是什么
    教师面试指要
    教师资格证结构化面试是什么?会怎么考查?
    教师资格证面试试讲时可以戴手表吗
    讲师面试流程及试讲指导
    教师资格面试:试讲和说课的区别
  • 原文地址:https://www.cnblogs.com/dijia478/p/10755580.html
Copyright © 2020-2023  润新知