Redis Cluster是Redis的分布式解决方案,在Redis 3.0版本正式推出的,有效解决了Redis分布式方面的需求。当遇到单机内存、并发、流量等瓶颈时,可以采用Cluster架构达到负载均衡的目的。分布式集群首要解决把整个数据集按照分区规则映射到多个节点的问题,即把数据集划分到多个节点上,每个节点负责整个数据的一个子集。

v功能介绍

1.0 数据自动分片

集群中每个节点都会负责一定数量的slot,每个key会映射到一个具体的slot,通过这种方式就可能找到key具体保存在哪个节点上了。

1.1 提供hash tags功能

通过hash tag功能可以将多个不同key映射到同一个slot上,这样就能够提供multi-key操作,hash tag的使用的方式是在key中包含“{}”,这样只有在“{...}”中字串被用于hash计算。

1.2 自动失效转移和手动失效转移

1.3 减少硬件成本和运维成本。

vRedis Cluster目标

高性能
高可用
线性扩容

v配置Redis Cluster

创建目录cluster,并为6个实例创建各自的目录,这6个目录用来存放6个实例,后面将使用这6个实例组成集群。3个Master和3个Slave

1.0 创建目录

mkdir redis-cluster

mkdir 900{1,2,3,4,5,6}

1.1 拷贝6个实例

cp /root/redis-5.0.2/redis.conf /usr/local/bin/redis-cluster/9001

1.2 更新实例配置文件

具体来说,需要注意下:由于在一台机器上,因此每个实例应该有不同的端口;同时,每个实例显然会有自己的存放数据的地方;开启AOF模式;开启集群配置;开启后台模式;

1.3 Redis集群的操作在后文是通过Ruby脚本来完成的,因此需要安装Ruby相关的RPM包,以及Redis和Ruby的接口包。

1.3.1 安装ruby

yum install ruby

1.3.1 安装rubygems

yum install rubygems

1.4 启动Redis cluster实例

/root/redis-5.0.2/src/redis-server /usr/local/bin/redis-cluster/9001/redis.conf

通过netstat -tnulp | grep redisps -aux | grep redis查看是否启动成功。

1.5 redis-cli创建集群

./redis-cli --cluster create 10.168.11.116:9001 10.168.11.116:9002 10.168.11.116:9003 10.168.11.116:9004 10.168.11.116:9005 10.168.11.116:9006

注意,redis5.0使用redis-cli作为创建集群的命令,使用c语言实现,不再使用ruby语言。

1.6 检查集群

./redis-cli --cluster check 10.168.11.116:9001

1.7 查看集群key、slot、slave分布信息

./redis-cli --cluster info 10.168.11.116:9001

1.8 集群相关命令

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 将节点的配置文件保存到硬盘里面。
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 槽中的键。
CLUSTER SLAVES node-id 返回一个master节点的slaves 列表

vCluster测试效果

./redis-cli -c -h 10.168.11.116 -p 9001

其他参考资料:

作  者:请叫我头头哥

出  处:http://www.cnblogs.com/toutou/

关于作者:专注于基础平台的项目开发。如有问题或建议,请多多赐教!

版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。

特此声明:所有评论和私信都会在第一时间回复。也欢迎园子的大大们指正错误,共同进步。或者直接私信

声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是作者坚持原创和持续写作的最大动力!

最新文章

  1. C#实现快速排序
  2. NYOJ 461
  3. centos 安装redis(一台机器可以安装多个redis)
  4. HDOJ(2056)&amp;HDOJ(1086)
  5. 获取当前请求的URL的地址、参数、参数值、各种属性
  6. Java--剑指offer(9)
  7. 设置tomcat的编码为utf-8
  8. leetcode 115 Distinct Subsequences ----- java
  9. leetcode:Longest Palindromic Substring(求最大的回文字符串)
  10. window下版本控制工具Git 客户端安装
  11. Android中的时间日期选择器
  12. Magento 前台的logo更改
  13. Hibernate Validation使用示例及讲解
  14. Biztalk AS2开发经验总结
  15. IE 不兼容 js indexOf 函数
  16. 关于破解Quartus
  17. h5图片上传预览
  18. JS 中offset 的小bug 与解决方案。
  19. Oracle的基本查询知识
  20. java 读写ini配置文件

热门文章

  1. Python基础语法07--面向对象+正则表达式
  2. AspNet MVC4 教学-23:Asp.Net MVC4 Display And Editor 模板技术高速应用Demo
  3. [POI 2001+2014acm上海邀请赛]Gold Mine/Beam Cannon 线段树+扫描线
  4. 【转】DevOps原则
  5. 【转载】读懂IL代码就这么简单 (一)
  6. Android Studio代码自己主动检測错误提示
  7. poj2406--Power Strings(kmp:求循环串的次数)
  8. Xammp修改端口
  9. IE兼容模式
  10. css3的渐变效果