美文网首页
redis集群搭建以及API访问

redis集群搭建以及API访问

作者: 07b287742148 | 来源:发表于2019-03-08 21:49 被阅读0次

    redis集群:

    1. 这里是2台机器模拟6个节点,如果机器多,可以按照说明配置多台机器
    2. 下载并编译好单个redis,路径如下:
    /usr/local/redis/
    
    1. 下载redis-4.0.0.gem到上述目录

    安装ruby并升级

    yum install ruby -y
    
    yum install rubygems -y
    
    #查看ruby版本, 需要升级到2.0以上
    ruby -v
    
    # ruby 1.8.7 (2013-06-27 patchlevel 374) [x86_64-linux]
    
    
    # 执行以下操作
    gem sources -a http://mirrors.aliyun.com/rubygems/ 
    
    yum install curl -y
    
    gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
     
    curl -sSL https://get.rvm.io | bash -s stable
    
    # 出现带黄色字体的信息表示安装成功
    # 安装2.3版
    
    source /usr/local/rvm/scripts/rvm
    
    rvm list known
    
    rvm install 2.3.3
    
    rvm use 2.3.3
    
    rvm remove 1.8.7 
    
    ruby -v
    

    配置redis集群

    # 节点1创建集群目录
    mkdir /usr/local/redis-clustor/
    
    # 在redis-clustor目录下创建redis节点目录
    mkdir /usr/local/redis-clustor/redis01
    mkdir /usr/local/redis-clustor/redis02
    mkdir /usr/local/redis-clustor/redis03
    
    # 另外一个节点2执行相同操作,redis节点为4,5,6
    
    # 进入/usr/local/redis/,即编译好的redis目录,将src目录下的文件考入各个redis节点
             redis-check-aof
             redis-cli   
             redis-sentinel
             redis-benchmark  
             redis-check-rdb  
             redis.conf  
             redis-server
             
             
    # 注意是将redis/src/目录下上述文件拷贝到redis-clustor/redis01/2/3/4/5/6,都要拷贝
    
    # 修改redis集群各个节点配置文件
    vim redis01/redis.conf 
    
    # 主要修改4个地方
        bind ip # (当前redis节点所在机器的ip,不能是127.0.0.1)
        
        port 7001 # 6个redis节点,依次改为7001-7006
        
        daemonize yes # 后台启动
        
        protected-mode no # 关闭保护模式
        
        cluster-enabled yes # 开启集群模式
        
        cluster-config-file 1367004.conf # 集群配置文件,每个redis节点各自命名,最好是ip+端口
    
    # 将redis/src目录下redis-trib.rb拷贝到redis-cluster/下。
    # 此时两台机器的redis-cluster/下应该分别为:
    
    
    drwxr-xr-x. 2 root root   152 Mar  8 19:49 redis01
    drwxr-xr-x. 2 root root   152 Mar  8 19:41 redis02
    drwxr-xr-x. 2 root root   152 Mar  8 19:41 redis03
    -rwxr-xr-x. 1 root root 65991 Mar  8 19:12 redis-trib.rb
    
    drwxr-xr-x. 2 root root   152 Mar  8 21:12 redis04
    drwxr-xr-x. 2 root root   152 Mar  8 19:42 redis05
    drwxr-xr-x. 2 root root   152 Mar  8 19:42 redis06
    -rwxr-xr-x. 1 root root 65991 Mar  8 19:34 redis-trib.rb
    
    # 启动所有redis节点,可以一个一个启也可以自己写脚本一起启动
    redis01/redis-server redis01/redis.conf
    redis02/redis-server redis02/redis.conf
    redis03/redis-server redis03/redis.conf
    
    redis04/redis-server redis04/redis.conf
    redis05/redis-server redis05/redis.conf
    redis06/redis-server redis06/redis.conf
    
    
    
    
    # 查看进程,两台机器应该各有三个
    ps -ef | grep redis
    
    root     38870     1  0 20:02 ?        00:00:07 redis01/redis-server 10.205.40.135:7001 [cluster]
    root     38872     1  0 20:02 ?        00:00:07 redis02/redis-server 10.205.40.135:7002 [cluster]
    root     38877     1  0 20:02 ?        00:00:06 redis03/redis-server 10.205.40.135:7003 [cluster]
    
    
    
    root     38870     1  0 20:02 ?        00:00:07 redis01/redis-server 10.205.40.135:7001 [cluster]
    root     38872     1  0 20:02 ?        00:00:07 redis02/redis-server 10.205.40.135:7002 [cluster]
    root     38877     1  0 20:02 ?        00:00:06 redis03/redis-server 10.205.40.135:7003 [cluster]
    
    
    # 然后在任意一台机器的redis-cluster/目录下执行:
    ./redis-trib.rb create --replicas 1 IP:7001 IP:7002 IP:......
    
    # 显示这个表示开始连接集群
    >>> Creating cluster
    
    # 如果一直显示等待节点加入,需要关闭防火墙
    service iptables stop
    service firewalld stop
    
    # 如果创建失败,要关闭所有redis进程,删除当前目录下redis集群节点的配置文件
    # 即之前设置的ip+端口.conf文件
    # 然后重新启动6台redis和创建集群命令
    
    
    # 创建成功后可以在任意一台机器访问任意一个redis节点
    redis01/redis-cli -h ip -p 7002 -c
    
    

    idea使用jedis连接池访问redis集群

    # pom依赖
    <dependencies>
    
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.2</version>
        </dependency>
    
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.9.0</version>
        </dependency>
    
    </dependencies>
    
    
    # java代码
    public static void main(String[] args) {
            GenericObjectPoolConfig config = new GenericObjectPoolConfig();
            config.setMaxTotal(30);
            config.setMaxWaitMillis(2000);
            Set<HostAndPort> jedisClusterNode = new HashSet<HostAndPort>();
            jedisClusterNode.add(new HostAndPort("10.205.40.135", 7001));
            jedisClusterNode.add(new HostAndPort("10.205.40.135", 7002));
            jedisClusterNode.add(new HostAndPort("10.205.40.135", 7003));
            jedisClusterNode.add(new HostAndPort("10.205.40.136", 7004));
            jedisClusterNode.add(new HostAndPort("10.205.40.136", 7005));
            jedisClusterNode.add(new HostAndPort("10.205.40.136", 7006));
            JedisCluster jc = new JedisCluster(jedisClusterNode, config);
            jc.set("52", "poolTestValue2");
            jc.set("53", "poolTestValue2");
            System.out.println(jc.get("52"));
            System.out.println(jc.get("53"));
            try {
                jc.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    

    相关文章

      网友评论

          本文标题:redis集群搭建以及API访问

          本文链接:https://www.haomeiwen.com/subject/msodpqtx.html