redis集群
什么是集群?
集群就是多个服务器集中再一起 ,去处理同一个业务
集群和分布式概念
分布式是指将不同的业务分布在不同的地方,多个服务器去完成不同的业务功能
集群指的是将多台服务器集中在一起,实现同一业务
集群的好处-------- 解决 高并发 大数据的问题
集群的特点
(1) 扩展性 --可以动态的去扩展的服务器
(2) 高可用 --> 具备容错的功能 (错误恢复)
(3) 负载均衡 -->把请求分配到不同的服务器里面
Redis集群方案
方案一 主从复制
优点: 支持主从复制,主机会自动将数据同步到从机,可以进行读写分离
缺点:不具备自动容错和恢复功能(keepalive) 获取 手动重启
扩展服务器比较麻烦
方案二: 哨兵模式
Redis 2.8中提供了哨兵工具来实现自动化的系统监控和故障恢复功能
哨兵的作用就是监控Redis系统的运行状况。它的功能包括以下两个。
(1)监控主服务器和从服务器是否正常运行。
(2)主服务器出现故障时自动将从服务器转换为主服务器
优点:主从可以自动切换,系统更健壮,可用性更高。
缺点: Redis较难支持在线扩容,在集群容量达到上限时在线扩容会变得很复杂
方案3 Redis-Cluster集群
Redis-Cluster 采用无中心结构
好处:可以完成分布式存储问题,解决容量问题
redis集群搭建步骤
要让集群正常运作至少需要3个主节点,建议配置3个主节点,其余3个作为各个主节点的从节点(也是官网推荐的模式)。同一台电脑,不同端口模拟
(1) 拷贝6份 redis文件---redis.windows.conf
修改 端口 为 6379 , 6380,6381,6382,6383,6384
修改配置
cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 15000
appendonly yes
(2) 编写一个启动脚本
在对应的文件夹里面新创建文件 startup.bat
title redis-6379
redis-server.exe redis.windows.conf
(3) 安装ruby环境
(4) 安装ruby驱动环境
下载地址 https://rubygems.org/pages/download
\rubygems-2.7.7 目录里面执行文件 ruby setup.rb
(5)通过驱动安装redis
切换到6379文件夹里面 在命令行中安装 redis
gem install redis
(6)启动服务 创建集群
点击每个节点start.bat进行启动
拷贝redis-trib.rb到6379的redis节点
创建集群
redis-trib.rb create --replicas 1 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384
Jedis代码测试
@Test
public void testCluster() throws IOException, InterruptedException {
Set<HostAndPort> nodes = new HashSet<>();
nodes.add(new HostAndPort("127.0.0.1", 6379));
nodes.add(new HostAndPort("127.0.0.1", 6380));
nodes.add(new HostAndPort("127.0.0.1", 6381));
nodes.add(new HostAndPort("127.0.0.1", 6382));
nodes.add(new HostAndPort("127.0.0.1", 6383));
nodes.add(new HostAndPort("127.0.0.1", 6384));
JedisCluster cluster = new JedisCluster(nodes);
try {
String res = cluster.get("name");
System.out.println(res);
// cluster.quit();
} catch (Exception e) {
e.printStackTrace();
// cluster.quit();
}
}
}
来源:CSDN
作者:Din35
链接:https://blog.csdn.net/ding35_99/article/details/104008992