Ubuntu16.04.1 安装Redis-Cluster
Redis在3.0版正式引入了集群这个特性。Redis集群是一个分布式(distributed)、容错(fault-tolerant)的 Redis内存K/V服务, 集群可以使用的功能是普通单机 Redis 所能使用的功能的一个子集(subset),比如Redis集群并不支持处理多个keys的命令,因为这需要在不同的节点间移动数据,从而达不到像Redis那样的性能,在高负载的情况下可能会导致不可预料的错误。
Redis集群的几个重要特征:
(1).Redis 集群的分片特征在于将键空间分拆了16384个槽位,每一个节点负责其中一些槽位。
(2).Redis提供一定程度的可用性,可以在某个节点宕机或者不可达的情况下继续处理命令.
(3).Redis 集群中不存在中心(central)节点或者代理(proxy)节点, 集群的其中一个主要设计目标是达到线性可扩展性(linear scalability)。
安装Redis
通过官网http://redis.io/获取稳定版源码包下载地址;
1 2 3 4 | $ wget http://download.redis.io/releases/redis-3.2.3.tar.gz $ tar xzf redis-3.2.3.tar.gz $ cd redis-3.2.3 $ make |
注意:
1:可能新linux系统中未安装gcc,通过如下命令安装
1 | apt-get install build-essential |
2:在make时可能出现错误" error: jemalloc/jemalloc.h: No such file or directory",通过如下命令解决。
1 | make MALLOC=libc |
安装Redis-Cluster
首先安装Redis-Cluster依赖库
安装Ruby
1 | apt-get install ruby |
安装Redis.gem
1 | gem intall redis |
注意:本步骤需要翻/墙,可以先下载到本地,然后再安装,下载地址https://rubygems.org/gems/redis/versions/3.3.1
1 | gem install /usr/downloads/redis-3.3.1.gem |
创建Redis-Cluster,并分配Redis节点
按照端口号,依次创建对应文件夹,并配置redis.conf信息
启动redis实例,查看redis进程
注意:若要让集群正常运作至少需要三个主节点,我们的环境中,每个主节点附带一个从节点,所以一共六个节点。
通过redis-trib.rb创建redis集群,命令如下
1 | ./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 |
注意:表示1个salve。redis-trib.rb在redis解压目录src中可以找到。
若要让集群正常运作至少需要三个主节点,我们的环境中,每个主节点附带一个从节点,所以一共六个节点。
创建结果如下图,会提示Can I set the above configuration? (type 'yes' to accept):
输入yes ,然后出现如下图 , [OK] All 16384 slots covered表示创建成功。
检查集群状态,选中其中一个节点即可。
连接Redis集群
注意:节点会对命令请求进行分析和key的slot计算,并且会查找这个命令所要处理的键所在的槽。如果要查找的哈希槽正好就由接收到命令的节点负责处理, 那么节点就直接执行这个命令。另一方面, 如果所查找的槽不是由该节点处理的话, 节点将查看自身内部所保存的哈希槽到节点 ID 的映射记录, 并向客户端回复一个 MOVED 错误。
cluster集群相关命令,更多redis相关命令见文档:http://redis.readthedocs.org/en/latest/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 集群 CLUSTER INFO 打印集群的信息 CLUSTER NODES 列出集群当前已知的所有节点(node),以及这些节点的相关信息。 节点 CLUSTER MEET < ip > < port > 将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子。 CLUSTER FORGET < node_id > 从集群中移除 node_id 指定的节点。 CLUSTER REPLICATE < node_id > 将当前节点设置为 node_id 指定的节点的从节点。 CLUSTER SAVECONFIG 将节点的配置文件保存到硬盘里面。 槽(slot) CLUSTER ADDSLOTS < slot > [slot ...] 将一个或多个槽(slot)指派(assign)给当前节点。 CLUSTER DELSLOTS < slot > [slot ...] 移除一个或多个槽对当前节点的指派。 CLUSTER FLUSHSLOTS 移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点。 CLUSTER SETSLOT < slot > NODE < node_id > 将槽 slot 指派给 node_id 指定的节点,如果槽已经指派给另一个节点,那么先让另一个节点删除该槽>,然后再进行指派。 CLUSTER SETSLOT < slot > MIGRATING < node_id > 将本节点的槽 slot 迁移到 node_id 指定的节点中。 CLUSTER SETSLOT < slot > IMPORTING < node_id > 从 node_id 指定的节点中导入槽 slot 到本节点。 CLUSTER SETSLOT < slot > STABLE 取消对槽 slot 的导入(import)或者迁移(migrate)。 键 CLUSTER KEYSLOT < key > 计算键 key 应该被放置在哪个槽上。 CLUSTER COUNTKEYSINSLOT < slot > 返回槽 slot 目前包含的键值对数量。 CLUSTER GETKEYSINSLOT < slot > < count > 返回 count 个 slot 槽中的键。 |
本文链接: 文章作者:雨~桐 文章出处:http://www.cnblogs.com/piscesLoveCc/ 如果您觉得阅读本文对您有帮助,请点一右下角的“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决