redis集群搭建以及API访问

2019-03-08  本文已影响0人  07b287742148

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();
        }
    }
上一篇下一篇

猜你喜欢

热点阅读