博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Redis(4):集群搭建和java连接
阅读量:4280 次
发布时间:2019-05-27

本文共 8530 字,大约阅读时间需要 28 分钟。

一、实现功能

实现redis集群搭建,以及的应用java程序连接测试。

二、环境

1.redis-3.2.0

2.Centos6.4

三、集群搭建前提:6节点redis搭建

1.安装依赖程序

yum install gcc-c++yum install -y tcl

2.下载安装文件

wget http://download.redis.io/releases/redis-3.2.0.tar.gz

3.解压安装文件文件

tar -zxvf redis-3.2.0.tar.gz -C /opt/modules/

4.编译安装

cd /opt/modules/redis-3.2.0make && make install

5.创建6个节点的配置文件

(1)创建目录

cd /opt/modules/redis-3.2.0[root@bigdata redis-3.2.0]# mkdir mycluster[root@bigdata redis-3.2.0]# cd mycluster/[root@bigdata mycluster]# mkdir 6380 6381 6382 6383 6384 6385

(2)复制配置文件到各个目录下面

[root@bigdata redis-3.2.0]# cp redis.conf mycluster/6380[root@bigdata redis-3.2.0]# cp redis.conf mycluster/6381[root@bigdata redis-3.2.0]# cp redis.conf mycluster/6382[root@bigdata redis-3.2.0]# cp redis.conf mycluster/6383[root@bigdata redis-3.2.0]# cp redis.conf mycluster/6384[root@bigdata redis-3.2.0]# cp redis.conf mycluster/6385

(3)修改6个配置文件redis.conf对应内容

port  6380                                        //端口6381,6382,6383,6384,6385        bind 本机ip                                       //默认ip为127.0.0.1 需要改为其他节点机器可访问的ip 否则创建集群时无法访问对应的端口,无法创建集群daemonize    yes                               //redis后台运行pidfile  /var/run/redis_6380.pid          //pidfile文件对应6380,6381,6382,6383,6384,6385cluster-enabled  yes                           //开启集群  把注释#去掉cluster-config-file  nodes_7000.conf   //集群的配置  配置文件首次启动自动生成 6380,6381,6382,6383,6384,6385cluster-node-timeout  15000                //请求超时  默认15秒,可自行设置appendonly  yes                           //aof日志开启  有需要就开启,它会每次写操作都记录一条日志

可能遇到报错:

https://blog.csdn.net/u010886217/article/details/104650885

6.启动6个节点

[root@bigdata redis-3.2.0]# redis-server mycluster/6380/redis.conf[root@bigdata redis-3.2.0]# redis-server mycluster/6381/redis.conf[root@bigdata redis-3.2.0]# redis-server mycluster/6382/redis.conf[root@bigdata redis-3.2.0]# redis-server mycluster/6383/redis.conf[root@bigdata redis-3.2.0]# redis-server mycluster/6384/redis.conf[root@bigdata redis-3.2.0]# redis-server mycluster/6385/redis.conf

7.检查启动情况

[root@bigdata redis-3.2.0]# ps -aux | grep redisWarning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQroot      33891  0.0  0.3 137656  9804 ?        Ssl  12:31   0:01 redis-server 192.168.0.9:6380 [cluster]root      33895  0.0  0.3 137656  9784 ?        Ssl  12:31   0:01 redis-server 192.168.0.9:6381 [cluster]root      33899  0.0  0.3 137656  9796 ?        Ssl  12:31   0:01 redis-server 192.168.0.9:6382 [cluster]root      33904  0.0  0.2 137656  7760 ?        Ssl  12:31   0:01 redis-server 192.168.0.9:6383 [cluster]root      33909  0.0  0.2 137656  7740 ?        Ssl  12:31   0:01 redis-server 192.168.0.9:6384 [cluster]root      33913  0.0  0.2 137656  7760 ?        Ssl  12:31   0:01 redis-server 192.168.0.9:6385 [cluster]root      33930  0.0  0.1  13340  3076 pts/6    S+   12:34   0:00 redis-cli -h 192.168.0.9 -c -p 6380root      33955  0.0  0.1  13340  3072 pts/1    S+   12:35   0:00 redis-cli -h 192.168.0.9 -c -p 6385root      34010  0.0  0.0 103268   892 pts/7    S+   13:03   0:00 grep redis

四、创建集群

1.安装ruby

yum -y install ruby ruby-devel rubygems rpm-build

2.gem安装redis对应版本

备注:这一步可能时间有些长,耐心等待

gem install  redis --version 3.2.0

3.执行创建集群

redis-trib.rb create --replicas 1 192.168.0.9:6380 192.168.0.9:6381 192.168.0.9:6382 192.168.0.9:6383 192.168.0.9:6384 192.168.0.9:6385

[root@bigdata mycluster]# redis-trib.rb  create  --replicas  1  192.168.0.9:6380 192.168.0.9:6381 192.168.0.9:6382 192.168.0.9:6383   192.168.0.9:6384 192.168.0.9:6385

>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.0.9:6380
192.168.0.9:6381
192.168.0.9:6382
Adding replica 192.168.0.9:6383 to 192.168.0.9:6380
Adding replica 192.168.0.9:6384 to 192.168.0.9:6381
Adding replica 192.168.0.9:6385 to 192.168.0.9:6382
M: c972db1e5df4e1ffe495e42c03fc8d27ca99d15b 192.168.0.9:6380
   slots:0-5460 (5461 slots) master
M: dbc30ef2574f11b8c7ffe9fad9de39fefbc62659 192.168.0.9:6381
   slots:5461-10922 (5462 slots) master
M: efe2c2c197eceec0864c3d09e4878c9d2264b990 192.168.0.9:6382
   slots:10923-16383 (5461 slots) master
S: 586c9d258380b71d5ec8a7301ba3c79cd27d143b 192.168.0.9:6383
   replicates c972db1e5df4e1ffe495e42c03fc8d27ca99d15b
S: ea9b8edb48b9f657380f785d91f5eca66335953b 192.168.0.9:6384
   replicates dbc30ef2574f11b8c7ffe9fad9de39fefbc62659
S: 40bada33e11e058ade5b7523315aee866acd21dd 192.168.0.9:6385
   replicates efe2c2c197eceec0864c3d09e4878c9d2264b990
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join....
>>> Performing Cluster Check (using node 192.168.0.9:6380)
M: c972db1e5df4e1ffe495e42c03fc8d27ca99d15b 192.168.0.9:6380
   slots:0-5460 (5461 slots) master
M: dbc30ef2574f11b8c7ffe9fad9de39fefbc62659 192.168.0.9:6381
   slots:5461-10922 (5462 slots) master
M: efe2c2c197eceec0864c3d09e4878c9d2264b990 192.168.0.9:6382
   slots:10923-16383 (5461 slots) master
M: 586c9d258380b71d5ec8a7301ba3c79cd27d143b 192.168.0.9:6383
   slots: (0 slots) master
   replicates c972db1e5df4e1ffe495e42c03fc8d27ca99d15b
M: ea9b8edb48b9f657380f785d91f5eca66335953b 192.168.0.9:6384
   slots: (0 slots) master
   replicates dbc30ef2574f11b8c7ffe9fad9de39fefbc62659
M: 40bada33e11e058ade5b7523315aee866acd21dd 192.168.0.9:6385
   slots: (0 slots) master
   replicates efe2c2c197eceec0864c3d09e4878c9d2264b990
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

4.测试

(1)在6380端口的redis登录

[root@bigdata mycluster]# redis-cli -h 192.168.0.9 -c -p 6380  192.168.0.9:6380> set k1 1-> Redirected to slot [12706] located at 192.168.0.9:6382OK

(2)另外客户端去获取k1

[root@bigdata ~]#  redis-cli -h 192.168.0.9 -c -p 6385192.168.0.9:6385> get k1-> Redirected to slot [12706] located at 192.168.0.9:6382"1"

备注:

-c 可连接到集群
-h 主机ip:因为上面 redis.conf 将 bind 改为了ip地址,所以 -h 参数不可以省略

5.查看主从信息

192.168.0.9:6382> cluster nodesdbc30ef2574f11b8c7ffe9fad9de39fefbc62659 192.168.0.9:6381 master - 0 1583314735242 2 connected 5461-10922efe2c2c197eceec0864c3d09e4878c9d2264b990 192.168.0.9:6382 myself,master - 0 0 3 connected 10923-1638340bada33e11e058ade5b7523315aee866acd21dd 192.168.0.9:6385 slave efe2c2c197eceec0864c3d09e4878c9d2264b990 0 1583314739314 6 connectedc972db1e5df4e1ffe495e42c03fc8d27ca99d15b 192.168.0.9:6380 master - 0 1583314738299 1 connected 0-5460586c9d258380b71d5ec8a7301ba3c79cd27d143b 192.168.0.9:6383 slave c972db1e5df4e1ffe495e42c03fc8d27ca99d15b 0 1583314737279 4 connectedea9b8edb48b9f657380f785d91f5eca66335953b 192.168.0.9:6384 slave dbc30ef2574f11b8c7ffe9fad9de39fefbc62659 0 1583314741356 5 connected

 

五、Java连接Redis集群

1.依赖

     
redis.clients
     
jedis
     
2.9.0
 

2.代码

public static JedisCluster getJedisCluster() throws IOException {        JedisCluster cluster =null;        try {            Set
nodes = new LinkedHashSet
(); //一般选用slaveof从IP+端口进行增删改查,不用master nodes.add(new HostAndPort("192.168.0.9", 6380)); nodes.add(new HostAndPort("192.168.0.9", 6381)); nodes.add(new HostAndPort("192.168.0.9", 6382)); nodes.add(new HostAndPort("192.168.0.9", 6383)); nodes.add(new HostAndPort("192.168.0.9", 6384)); nodes.add(new HostAndPort("192.168.0.9", 6385)); // Jedis连接池配置 JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); // 最大空闲连接数, 默认8个 jedisPoolConfig.setMaxIdle(100); // 最大连接数, 默认8个 jedisPoolConfig.setMaxTotal(500); //最小空闲连接数, 默认0 jedisPoolConfig.setMinIdle(0); // 获取连接时的最大等待毫秒数(如果设置为阻塞时BlockWhenExhausted),如果超时就抛异常, 小于零:阻塞不确定的时间, 默认-1 jedisPoolConfig.setMaxWaitMillis(2000); // 设置2秒 //对拿到的connection进行validateObject校验 jedisPoolConfig.setTestOnBorrow(true); //未设置auth Password// JedisCluster jedis = new JedisCluster(nodes, jedisPoolConfig); cluster = new JedisCluster(nodes, jedisPoolConfig); //设置auth Password //JedisCluster jedis = new JedisCluster(nodes,5000,3000,10,{auth_password}, new JedisPoolConfig());// System.out.println(cluster.get("k1")); }catch(Exception e) { e.printStackTrace(); }finally {// if(null !=cluster)// cluster.close(); } return cluster; }

六、参考

1.https://www.cnblogs.com/wuxl360/p/5920330.html

你可能感兴趣的文章
android电池系统
查看>>
android4.x 耳机插拔检测机制
查看>>
Android 4.x耳机插拔检测实现方法
查看>>
android修改开机动画和铃声
查看>>
android audio音量控制流程
查看>>
解密回声消除技术之一(理论篇)
查看>>
Speex编解码在Android上实现
查看>>
speex回音消除
查看>>
audio 声道路由策略分析
查看>>
Android Audio 代码分析- Audio Strategy
查看>>
DAPM之二: audio paths与dapm kcontrol
查看>>
Android音量控制曲线
查看>>
Android Tombstone/Crash的log分析和定位
查看>>
Android Native/Tombstone Crash Log 详细分析
查看>>
怎么更改安卓系统铃声级数大小
查看>>
怎么更改开机铃声的声音大小
查看>>
Linux内核驱动之GPIO子系统(一)GPIO的使用
查看>>
system系统调用的使用
查看>>
怎么在编译时打印log
查看>>
怎么添加一个tinymix可执行文件的te文件
查看>>