当前位置:首页 > 问答 > 正文

Redis集群到底有啥好处,为什么越来越多人选它来搞分布式存储和高可用呢

Redis集群的好处,说白了,就是当你的数据量变得非常大,或者对服务的稳定性要求非常高,单台Redis服务器已经顶不住了的时候,它提供的一套“人多力量大”的解决方案,为什么越来越多人选它?因为现在的互联网应用动不动就上亿用户,数据量和访问压力是单机根本无法承受的,而Redis集群正好用相对简单的方式解决了这些核心痛点。

第一个大好处:自动把海量数据分开存,容量可以无限扩展。

想象一下,你有一个超级大的仓库(数据),一开始只有一个小库管(单机Redis)在管理,东西少的时候,他跑得快,记得清,但货物(数据)越来越多,已经堆到天花板了,小库管跑得气喘吁吁,效率自然就慢了,这就是单机Redis的内存瓶颈。

Redis集群到底有啥好处,为什么越来越多人选它来搞分布式存储和高可用呢

Redis集群的做法是,雇来好几个库管(多个Redis节点),然后把大仓库划分成16,384个固定的区域(在Redis集群中被称为哈希槽),让库管A管理0-5000号区域,库管B管理5001-10000号区域,库管C管理剩下的区域,当你有一批新货物(一条数据)要入库时,系统会根据货物的钥匙(key)自动算出一个编号,然后告诉你应该把这箱货放到哪个编号的区域,自然也就知道该交给哪个库管了,这样一来,每个库管只需要负责自己那一亩三分地,压力小了很多,如果你的货物继续增加,仓库不够用了,很简单,再雇一个新的库管D过来,然后从A、B、C每个人管理的区域里,匀出一部分给D就行了,这个过程是自动或半自动的,对存放的货物(数据)影响很小,这就是所谓的水平扩展能力,也是根据Redis官方文档中关于数据分片的核心思想来的,它让Redis突破了单机内存的限制,理论上可以存储无限大的数据。

第二个大好处:服务永远在线,挂了也能自动顶上去。

Redis集群到底有啥好处,为什么越来越多人选它来搞分布式存储和高可用呢

单机Redis最怕什么?怕服务器宕机,一旦这台唯一的服务器出点啥问题(比如断电、硬盘坏了),整个缓存服务就全挂了,依赖它的所有应用都会崩溃,这就是单点故障。

Redis集群通过“主从模式”完美解决了这个问题,还拿库管举例子,现在你不是给每个区域只配一个库管,而是给他配一个徒弟(从节点),库管A(主节点)负责管理0-5000号区域,他的徒弟A1(从节点)就时时刻刻拿着小本本把A的所有操作都记下来,保证自己和师傅管理的货物清单一模一样,平时由师傅A接待存取请求,徒弟A1只负责抄笔记,突然有一天,师傅A生病了(主节点宕机),集群的管理员会立刻发现,然后马上提拔徒弟A1成为新的师傅(主节点),由他接管0-5000号区域的管理工作,整个交接过程非常快,对于来仓库取货的应用来说,可能只是感觉稍微卡顿了一下,服务很快就恢复了,完全不会出现“仓库关门,明天请早”的灾难性局面,这种高可用的特性,确保了业务能够7x24小时不间断运行,这正是现代互联网应用的命根子,这种故障自动转移机制是Redis集群高可用性的基石。

Redis集群到底有啥好处,为什么越来越多人选它来搞分布式存储和高可用呢

第三个大好处:性能强悍,人多一起干活就是快。

单机Redis的性能再强,也有上限,特别是网络带宽、CPU处理能力都是固定的,当每秒有几十万、上百万个请求砸过来时,一台机器再牛也处理不过来。

Redis集群因为把数据和请求分散到了多个主节点上,每个节点都可以独立处理自己负责的那部分数据的读写请求,这就好比原来只有一个收银台,排长队;现在开了十个收银台,队伍自然就短了,整体处理能力(吞吐量)得到了成倍的提升,这对于需要处理高并发场景的应用,比如电商秒杀、社交App的热点话题等,是至关重要的。

为什么Redis集群越来越受欢迎?

因为它用一套优雅的机制,同时解决了分布式系统中最关键的三个问题:大数据容量、高可用性、和高并发性能,相比于一些非常复杂的分布式系统,Redis集群的部署和理解门槛相对较低,学习成本不高,这让很多开发者能够快速上手,解决实际业务中遇到的扩展性和可靠性难题,当你的业务还在萌芽期,数据量不大,用单机Redis简单又高效;但当你的业务开始起飞,要应对海量用户和数据时,Redis集群就成为了一个自然而必然的选择。 的核心原理阐述,参考了Redis官方文档中关于集群的数据分片、主从复制和故障转移等基本概念。)