首页 > 数据库 >Redis——05 学习

Redis——05 学习

时间:2022-12-19 10:46:02浏览次数:30  
标签:05 Redis redis 学习 Cluster 集群 conf master 节点

Redis——05

之前了解了主从复制以及哨兵,接下来了解集群模式。

集群(Cluster)

先来聊一下前面学的哨兵 Sentinel,一般利用哨兵对 master 节点继续监控,如果 master 发生异常,则会做主从切换,将某一台 salve 作为 master。那么这有一个问题,只有一个 master 对外提供服务,没法支持高并发,且单个节点的内存有限,持久化文件也不能过大,影响恢复和主从同步的效率。并且不需要设置 Sentinel 也能完成节点移除和故障转移的功能。

redis 3.0 后加入的 Cluster 模式,采用无中心节点方式,可水平扩展。

集群简单部署:

1. 创建 Cluster 模型文件夹

在一台虚拟机进行演示,创建 redis-cluster 作为 Cluster 模型部署的文件夹。

2. 部署干净的 Redis 目录。

采用 6 个节点,一主一从,3 个 master 以及 3 个 salve。

注意:Redis Cluster 至少需要三个主节点才能工作

3. 修改配置文件

每份 redis 中的 redis.conf 不需要去特定的设置主从关系,暂时将其看作集群中的普通节点。

  • 修改端口号
  • cluster-enable:是否集群
  • cluster-nodes-timeout:节点互联超时实际,毫秒为单位
  • cluster-config-file:集群配置文件,由 Redis 自行更新,不需要手动配置。但是需要确保文件名于正在运行的配置文件不冲突

image-20221217171913079

一般按照端口号进行区分,以及 daemonize yes 这个输出的 pid 文件可以用端口号进行区分。因为默认都是 6379 端口,需要用于标识不同的节点,防止不必要的冲突。

可以使用 vi 的命令将其批量替换端口号:%s/6379/port/g

有 6 个节点就都需要修改。

image-20221217172500028

所有节点的端口分别为:

master:

  • 7100
  • 7101
  • 7102

salve:

  • 7103
  • 7104
  • 7105

一开始并没有 master 和 salve 之分,只有在正式构建集群时才会分配。

4. 启动所有节点

编写 shell 脚本启动。

cd redis-m1
bin/redis-server redis.conf
cd ../redis-m2
bin/redis-server redis.conf
cd ../redis-m3
bin/redis-server redis.conf
cd ../redis-s1
bin/redis-server redis.conf
cd ../redis-s2
bin/redis-server redis.conf
cd ../redis-s3
bin/redis-server redis.conf

image-20221217173511083

此时 redis 只是具备了集群的节点效果,但是这 6 个节点并没有构成一个集群。

并且所有的 redis 节点下都有一个 nodes-port.conf,集群配置文件,自动生成。

5. 将所有节点构建成真正的集群

redis-cli --cluster <ip:port|节点的IP和端口>... --cluster-replicas <num>

--cluster-replicas <num>:集群的主从复制设置,每个 master 中有 num 个 salve。

构建信息:

image-20221217175343941

6. 测试集群是否搭建成功

登录 redis 集群查看:

redis-cli -h ip -p port -c

不加 -c 可以登录,但是由于 Cluster 默认有分配槽功能,就是将数据根据算法分摊到指定的槽中,并不是所有槽都归一个节点管理,分开管理,如果经过算法分配到了其他节点的槽上,就需要到目标节点进行操作。但是我们并不知道具体位置,所以 -c 的作用就是帮我们实现自动重定向

尝试写入一些数据:

image-20221217175945500

可以看到当我们写入数据时,Cluster 默认会对 key 值使用 crc16 算法进行运算得到一个整数值,再与 16384 取模来得到具体槽位。

设置name "zhang san" 时分配的槽是 5798 该槽不是 7100 端口(当前登录的端口服务)所管理,所以将其定向到正确的端口:7101,并进行存值,同时还会完成登录端口的切换。

当客户端向一个错误的节点发出了指令,该节点会发现指令的 key 所在的槽位并不归自己管理,这时它会向客 户端发送一个特殊的跳转指令携带目标操作的节点地址,告诉客户端去连这个节点去获取数据。客户端收到指 令后除了跳转到正确的节点上去操作,还会同步更新纠正本地的槽位映射表缓存,后续所有 key 将使用新的槽 位映射表。

7. 注意

需要注意的是不论读写操作,都需要落实到指定端口和指定的槽中,其中会牵涉槽的重定向。

标签:05,Redis,redis,学习,Cluster,集群,conf,master,节点
From: https://www.cnblogs.com/cndada/p/16991605.html

相关文章

  • Redis——04 学习
    Redis——04之前讲了redis的主从复制模型的优点以及搭建效果,但是依然有自己的缺陷,如果主节点宕机,那么其他从节点可能还有运行的,如果此时任意一个从节点升级生了主节点那......
  • Redis——06 学习
    Redis——06将Redis的基本使用以及三种模式进行了学习和了解。接下来就学习如何在Java中以及SpringBoot框架中使用Redis。JedisRedis在Java上的操作多半是集......
  • Markdown学习
     标题#+标题名字+空格+回车#号数量代表几级标题字体helloworld!!两边都加**变成粗体helloworld!!两边都加*变成斜体helloworld!!三个*变成斜体加粗helloworld!!两边......
  • delphi D11编程语言手册 学习笔记(P424-477) 泛型
      这本书可以在Delphi研习社②群256456744的群文件里找到.书名:Delphi11AlexandriaEdition.pdf 泛型在C++中叫做类型模板(templateclasses),单从字面上理......
  • pycaret学习之异常检测
    异常检测是识别与大多数数据明显不同的稀有物品、事件或观察结果的任务。通常,异常项目会转化为某种问题,例如银行欺诈、结构缺陷、医疗问题或文本中的错误。存在三大类异常......
  • 高性能Redis服务器注意事项
    摘要昨天简单理了理安装与配置相关的但是很多比较重要的核心性能参数并没有进行学习与探讨就基于昨天理解不深入的地方进行进一步的学习与了解希望能够提高Redis-Serve......
  • Redis7.0.7的简单安装与学习
    Redis7.0.7的简单安装与学习摘要2022.12.18世界杯决赛另外是我感染奥密克戎第五天.高烧已经没了,但是嗓子巨疼.睡不着觉,肝胆学习一下最新的Redis7.0.7第一部分......
  • spring的学习
    构造器的注入  这是原始的方法的注入  构造器注入  可以通过两种方法来进行注入 ......
  • ubuntu redis sentinel安装部署
    1.命令行安装sudoaptupdatesudoaptinstallredis-serversudoaptinstallredis-sentinel2.查看安装版本#redis-cli--versionredis-cli5.0.73.配置修改......
  • 深度学习常见问题汇总
    1.Expectedalltensorstobeonthesamedevice,butfoundatleasttwodevices,cuda:0andcpu!原因参与运算的两个或多个变量,有的在CPU上,有的在GPU上解决首先......