Redis集群与高可用
Redis集群
redis cluster 是redis官方提供的分布式解决方案,在3.0版本后推出的,有效地解决了redis分布式的需求,当一个redis节点挂了可以快速的切换到另一个节点。当遇到单机内存、并发等瓶颈时,可以采用分布式方案要解决问题。
分布式redis数据库
1、分区和槽slot
redis cluster中有一个16384(2^4 * 2^10)长度的槽的概念。通过哈希算法再加上取模运算可以将一个值固定地映射到某个区间,区间由连续的slot组成。
redis cluster采用虚拟槽分区,所有的键根据哈希函数(CRC16[key]&16383)映射到0-16383槽内,共16384个槽位,每个节点维护部分槽及槽所映射的键值数据
哈希函数: Hash()=CRC16[key]&16383 按位与
redis用虚拟槽分区原因:解耦数据与节点关系,节点自身维护槽映射关系,分布式存储
2、集群高可用
a、一个集群里面有M1、M2、M3三个节点,其中节点 M1包含 0 到 5500号哈希槽,节点M2包含5501 到 11000 号哈希槽,节点M3包含11001 到 16384号哈希槽。如果M2宕掉了,就会导致5501 到 11000 号哈希槽不可用,从而使整个集群不可用。
b、一个集群里面有M1-S1、M2-S2、M3-S3六个主从节点,其中节点 M1包含 0 到 5500号哈希槽,节点M2包含5501 到 11000 号哈希槽,节点M3包含11001 到 16384号哈希槽。如果是M2宕掉,集群便会选举S2为新节点继续服务,整个集群还会正常运行。当M2、S2都宕掉了,这时候集群就不可用了。
总结
redis集群至少需要一个备份节点,才能更好的保证集群的高可用。
最新文章
- 3D数学的实际应用
- 一口气从CSS讲到Servlet再到JSP、Struts2,清蒸JavaWeb的前前后后。
- UIScrollViewDelegate
- RHEL7文件归档与压缩
- Spring中AOP原理,源码学习笔记
- win7硬盘安装ubuntu双系统——注意项
- spoj 3871. GCD Extreme 欧拉+积性函数
- [实变函数]3.1 外测度 (outer measure)
- Windows phone 8 学习笔记(1) 触控输入(转)
- OWASP 2013年十大Web应用安全漏洞
- HTML本地测试成功后上传博客注意事项
- autoprefixer安装或者里sass的$mixin处理浏览器前缀
- ionic之$ionicHistory
- *args和**kwargs
- H5取经之路——添加hover实现特定效果
- 两张图彻底搞懂MyBatis的Mapper原理!
- 理解maven命令package、install、deploy的联系与区别
- ES系列二、CentOS7安装ES head6.3.1
- 转:用JS获取地址栏参数的方法(超级简单)
- sql——sql中的各种连接