java redis 多节点,Redis 集群(三),Redis集群为什么是三个以上

本文探讨Redis集群的设计原理,包括为何选择三个以上节点、虚拟槽分区机制及其背后的哈希算法。同时,文中也讨论了Redis集群存在的局限性,如键的批量操作限制、键事务支持的不足等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Redis 集群(三),Redis集群为什么是三个以上

为什么为有集群

在 Redis3 版本之前,每台 Redis 机器需要存储所有 Redis key ,这要求每台 Redis 机器有足够大的内存

而且只能是主节点写,从节点读,对于高并发情况下会有性能瓶颈

虽然有哨兵模式来保证服务的高用,但是切换主节点还是需要时间的(实测)

分布式数据库

分布式数据库指将数据均匀的分布到每个节点上,可以做数据冗余来排除故障,每个节点负责数据的一个子集

如何进行分区

常见的分区规则 哈希分区,顺序分区,Redis 集群使用了哈希分区 虚拟槽分区 方式

所有的键根据哈希函数 (CRC16[key]&16383) 映射到0-16383槽内,共16384个槽位,每个节点维护部分槽及槽所映射的键值数据

哈希函数: Hash()=CRC16[key]&16383 按位与

Redis用虚拟槽分区原因:解耦数据与节点关系,节点自身维护槽映射关系,分布式存储

Redis集群的不足

键的批量操作支持有限,比如mset, mget,如果多个键映射在不同的槽,就不支持了

键事务支持有限,当多个key分布在不同节点时无法使用事务,同一节点是支持事务

键是数据分区的最小粒度,不能将一个很大的键值对映射到不同的节点

不支持多数据库,只支持 0 数据库

主从结构只支持单层结构,不支持树型结构

搭建集群

参考我的另一篇文章 https://blog.youkuaiyun.com/sanri1993/article/details/101720686

一点小推广

创作不易,希望可以支持下我的开源软件,及我的小工具,欢迎来 gitee 点星,fork ,提 bug 。

Excel 通用导入导出,支持 Excel 公式

博客地址:https://blog.youkuaiyun.com/sanri1993/article/details/100601578

gitee:https://gitee.com/sanri/sanri-excel-poi

使用模板代码 ,从数据库生成代码 ,及一些项目中经常可以用到的小工具

博客地址:https://blog.youkuaiyun.com/sanri1993/article/details/98664034

gitee:https://gitee.com/sanri/sanri-tools-maven

相关文章暂无相关文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值