admin 管理员组文章数量: 887021
🧊Redis集群搭建和IDEA连接
- 一、🕊️ Redis集群方案
- 1. 🌿 redis-cluster
- 2.🌿 redis-cluster投票
- 3. 🌿 集群搭建步骤
- 🍃第一步:安装redis
- 🍃第二步:创建集群目录
- 🍃第三步:在集群目录下创建节点目录
- 🍃第四步:如果存在持久化文件,则删除
- 🍃第五步:打开Cluster-enable yes
- 🍃第六步:修改端口
- 🍃第七步:复制出7002-7006机器
- 🍃第八步:修改7002-7006机器的端口
- 🍃第九步:编写启动六台机器自定义脚本
- 🍃第十步:修改startall.sh文件的权限
- 🍃第十一步:启动所有的实例
- 🍃第十二步:创建集群(关闭防火墙)
- 🍃第十三步:连接集群
- 二、🕊️ IDEA连接redis
- 1. 🌿 关闭防火墙
- 2. 🌿 代码实现
一、🕊️ Redis集群方案
1. 🌿 redis-cluster
架构细节:
(1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.
(2)节点的fail是通过集群中超过半数的节点检测有效时整个集群才生效.
(3)客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可
(4)redis-cluster把所有的物理节点映射到[0-16383]slot上,cluster 负责维护node<->slot<->value
Redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value 时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽, redis 会根据节点数量大致均等的将哈希槽映射到不同的节点 。
示例如下:
2.🌿 redis-cluster投票
心跳机制
(1)集群中所有master参与投票,如果半数以上master节点与其中一个master节点通信超过(cluster-node-timeout), 认为该master节点挂掉.
(2):什么时候整个集群不可用(cluster_state:fail)?
-
如果集群任意master挂掉,且当前master没有slave,则集群进入fail状态。也可以理解成集群的[0-16383]slot映
射不完全时进入fail状态。
-
如果集群超过半数以上master挂掉,无论是否有slave,集群进入fail状态。
3. 🌿 集群搭建步骤
🍃第一步:安装redis
redis
安装教程:https://blog.csdn/mjh1667002013/article/details/123973167?spm=1001.2014.3001.5501
🍃第二步:创建集群目录
[root@centos7 local]# mkdir redis-cluster
🍃第三步:在集群目录下创建节点目录
集群目录下创建3台主机,每台主机配置一台从机。
搭建集群最少也得需要3台主机,如果每台主机再配置一台从机的话,则最少需要6台机器。
设计端口如下:创建6 个redis实例,需要端口号7001~7006 。
[root@centos7 local]# cp redis/ redis-cluster/7001 -r
🍃第四步:如果存在持久化文件,则删除
[root@centos7 7001]# rm -rf appendonly.aof dump.rdb
🍃第五步:打开Cluster-enable yes
修改redis.conf
配置文件,打开cluster-enable yes
。说明:cluster-enable
是否支持集群
[root@centos7 7001]# vi redis.conf
提示:检索文件: 输入:/cluster-enable当前页没有时,输入n,查找下一页
🍃第六步:修改端口
提示:检索文件: 输入:/port当前页没有时,输入n,查找下一页
🍃第七步:复制出7002-7006机器
将配置好的7001复制出另外需要的五台机器。
[root@centos7 redis-cluster]# cp 7001/ 7002 -r
[root@centos7 redis-cluster]# cp 7001/ 7003 -r
[root@centos7 redis-cluster]# cp 7001/ 7004 -r
[root@centos7 redis-cluster]# cp 7001/ 7005 -r
[root@centos7 redis-cluster]# cp 7001/ 7006 -r
🍃第八步:修改7002-7006机器的端口
修改7002-7006端口分别为7002-7006
。
🍃第九步:编写启动六台机器自定义脚本
写一个启动脚本:自定义shel脚本来一键启动六台机器。
①在redis-cluster
目录下创建startall.sh
空脚本,名称可自取。
[root@centos7 redis-cluster]# vi startall.sh
②脚本内容:
cd 7001
./bin/redis-server ./redis.conf
cd ..
cd 7002
./bin/redis-server ./redis.conf
cd ..
cd 7003
./bin/redis-server ./redis.conf
cd ..
cd 7004
./bin/redis-server ./redis.conf
cd ..
cd 7005
./bin/redis-server ./redis.conf
cd ..
cd 7006
./bin/redis-server ./redis.conf
cd ..
启动脚本内容很简单,把我们需要手动去启动每台服务的命令集合一起去执行就可以了。
🍃第十步:修改startall.sh文件的权限
[root@centos7 redis-cluster]# chmod u+x startall.sh
🍃第十一步:启动所有的实例
[root@centos7 redis-cluster]# ./startall.sh
🍃第十二步:创建集群(关闭防火墙)
确认防火墙是否关闭或放行。(centos7系统)
#查看防火墙是否关闭
firewall-cmd --state
#关闭防火墙
systemctl stop firewalld.service
注意:在任意一台上运行 不要在每台机器上都运行,一台就够了 redis 5.0.5中使用redis-cli --cluster替代redis- trib.rb,命令如下 :
redis-cli --cluster create ip:port ip:port ....ip:port cluster-replicas 1
[root@centos7 bin]# ./redis-cli --cluster create 192.168.249.166:7001 192.168.249.166:7002 192.168.249.166:7003 192.168.249.166:7004 192.168.249.166:7005 192.168.249.166:7006 --cluster-replicas 1
输入yes
确定
到这里集群全部搭建完成,下面测试一下。
🍃第十三步:连接集群
[root@centos7 7001]# ./bin/redis-cli -h 192.168.249.166 -p 7001 -c
#注意结尾的-c,-c:指定是集群连接
查看集群信息
192.168.249.166:7003> cluster info
查看集群中节点信息
192.168.249.166:7003> cluster nodes
二、🕊️ IDEA连接redis
1. 🌿 关闭防火墙
注意:如果redis
重启,需要将redis中生成的dump.rdb
和redis.conf
文件删除,然后再重启。
2. 🌿 代码实现
maven
的pom.xml
导入redis-client
依赖包。
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
连接核心java代码
public static void main(String[] args) throws IOException {
//1.创建一个集合,保存集群信息
Set set = new HashSet<HostAndPort>();
set.add(new HostAndPort("192.168.249.166",7001));
set.add(new HostAndPort("192.168.249.166",7002));
set.add(new HostAndPort("192.168.249.166",7003));
set.add(new HostAndPort("192.168.249.166",7004));
set.add(new HostAndPort("192.168.249.166",7005));
set.add(new HostAndPort("192.168.249.166",7006));
//2.创建集群操作对象
JedisCluster jedisCluster = new JedisCluster(set);
//3.操作数据库
//IDEA中的方法和redis中的指令是相同的
jedisCluster.set("demotest","mydemotest123");
String demo12 = jedisCluster.get("demotest");
System.out.println(demo12);
//4.关闭资源
jedisCluster.close();
}
结果:
版权声明:本文标题:Redis集群搭建和IDEA连接 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1726436691h960357.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论