欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Redis集群简单理解

程序员文章站 2022-03-05 10:10:35
...

Redis集群的简单理解

1. 集群概念

集群就是多个服务器做相同的事情,每个服务器都是完整的一个应用,多个服务器之间是复制的关系。
例如:
每个职位一样的人都干一样的事

2. 分布式

分布式就是多个服务器做不同的事情,每个服务器只是负责整个项目的一部分功能,所有服务器合起来才是一个完成的应用。
例如:
一样的职位分工干一个流程的工作

3. Redis集群的三种模式

  • 主从复制(读写分离 是后面的基石
    就一个主Redis,多个从Redis, 从Redis的数据是主Redis复制过来的 , 写操作(保存,删除,修改,查询)请求主Redis
    而从Redis只能读
  • Redis哨兵
    在主从的基础上增加了哨兵,监控主的健康状态,自动的进行从到主的提升
  • Redis-cluster集群
    什么是集群
    多主多从,多主实现了分布式数据存储,多主之间相互关联
    数据存储方案
    分布式数据存储 , 槽位运算 ,算法CRC16(key) % 16384

4. 搭建Redis-cluster集群

1.1.Redis 3.2

​ 需要 6 台 redis 服务器。搭建伪集群。

​ 需要 6 个 redis 实例。

​ 需要运行在不同的端口 6379-6384

1.2.Ruby语言运行环境

​ 我们需要使用ruby脚本来实现集群搭建

  • Ruby 打包系统RubyGems

    RubyGems简称gems,是一个用于对 Ruby组件进行打包的 Ruby 打包系统

  • Redis的Ruby驱动redis-xxxx.gem

  • 创建Redis集群的工具redis-trib.rb

2.Redis安装

2.1.安装6台Redis

在Window搭建6个伪集群

每个Redis创建启动脚本start.bat,内容如下

title redis-3679
redis-server.exe redis.windows.conf
2.2.Redis配置

修改redis.windows.conf,端口号分别对应:6379、6380、6381、6382、6383、6384。

开启cluster-enabled :cluster-enabled yes

指定集群配置文件: cluster-config-file nodes-6379.conf,cluster-config-file nodes-6379.conf 是为该节点的配置信息,这里使用 nodes-端口.conf命名方法。服务启动后会在目录生成该文件。

指定超时:cluster-node-timeout 15000

开启持久:appendonly yes

2.3.安装Ruby

rubyinstaller-2.6.3-1-x64.exe 傻瓜式安装即可

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ks4s6gRB-1580901452714)(images/1573699878425.png)]

2.4.安装Ruby驱动

1.解压Ruby驱动(rubygems-2.7.7) , 进入根目录,cmd执行

ruby setup.rb

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NWcRcSIv-1580901452715)(images/1573699927339.png)]

2.切入到Redis目录执行(6379的Redis目录)使用cmd执行 : gem install redis

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-e9AxMbcd-1580901452716)(images/1573699963621.png)]

2.5.执行集群构建脚本

1.启动6个Redis

2.拷贝redis-trib.rb到Redis目录(6379的Redis目录)

3.在6379根目录执行构建脚本:

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

4.在出现 Can I set the above configuration? (type ‘yes’ to accept): 请确定并输入 yes 。成功后的结果如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hEhm4N0j-1580901452717)(images/1573701010499.png)]

2.6.测试集群命令

启动客户端:redis-cli –c –h 127.0.0.1 –p 6379 , 可以跟任何节点的端口

查看整个集群:cluster info

查看当前 Redis:info replication

查看槽位:cluster nodes

2.7.集群代码测试
@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();
    }
}

5.总结

重点:

  1. Redis三种集群模式,分别有什么优点,和缺点
  2. Redis-Cluster最终集群方案 , 有多少个槽为,数据存储方式,故障转移
相关标签: redis