Redis预分区
创始人
2024-04-30 23:29:21
0

了解预分区前最好先了解一下分区。

分区存在一个问题,除非我们使用 Redis 作为缓存,否则增加和删除节点都是件麻烦事,而使用固定的键和实例映射要简单得多。

然而,数据存储的需求可能一直在变化。今天可接受 10 个 Redis 节点,但明天可能就需 50 个节点。

因为 Redis 只有相当少的内存占用且轻量级(一个空闲的实例只使用 1MB 内存),为防止以后的扩容,最好的办法就是一开始就启动较多实例。即便只有一台服务器,也可以一开始就让Redis以分布式的方式运行,使用分区来运行多个 Redis 实例在一台服务器上。

开始就可以选择很多数量的实例。例如:32 或 64 个实例能满足大多数用户,并且为未来的增长提供足够的空间。

随着时间的推移,数据存储需求总会发生变化。今天可能需要10个Redis节点就够了,但是明天可能就需要增加到50个节点。为防止以后的扩容,最好的办法就是一开始就启动较多实例。

这样,当数据存储增长,需要更多 Redis 服务器,你要做的就是简单地将实例从一台服务器移动到另外一台(而不用考虑重新分区的问题)。当你新添加了第一台服务器,你就需要把一半的 Redis 实例从第一台服务器搬到第二台,以此类推。

简单的说就是为了实现在线动态扩容和数据分区,Redis 的作者提出了预分区的方案,实际上就是在同一台机器上部署多个 Redis 实例,当容量不够时将多个实例拆分到不同的机器上,这样就达到了扩容的效果。


使用 Redis 复制,就可以在很小或者根本不需要停机的时间内完成移动数据:

  1. 在新服务器上启动一个空实例
  2. 移动数据,配置新实例为源实例的从服务
  3. 停止客户端
  4. 更新被移动实例的服务器 IP 地址配置
  5. 向新服务器上的从节点发送 SLAVEOF NO ONE 命令
  6. 以新的更新配置启动你的客户端
  7. 最后关闭掉旧服务器上不再使用的实例

以上拆分流程是 Redis 作者提出的一个平滑迁移的过程,不过该拆分方法还是很依赖 Redis 本身的复制功能的。如果主库数据文件过大,复制的过程也会相应的变长,同时也会给主库带来压力。

相关内容

热门资讯

【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
【前端】‘??‘与‘||‘有什... 0 问题 经常写const data = res.data.a ?? ''或者const d...
ChatGPT 怎么用最新详细... ChatGPT 以其强大的信息整合和对话能力惊艳了全球,在自然语言处理上面表现出了惊人...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...