详解Redis基
其它必要留意的是,Redis Sentinel实现的自动failover不是在统一个IP和端口上完成的,也就是说自动failover发生的新Master提供处事的IP和端口与之前的Master是纷歧样的,以是要实现HA,还要求客户端必需支持Sentinel,可以或许与Sentinel交互得到新Master的信息才行。 集群分片 为何要做集群分片:
当上述两个题目呈现时,就必必要对Redis举办分片了。 Redis的分片方案有许多种,譬喻许多Redis的客户端都自行实现了分片成果,也有向Twemproxy这样的以署理方法实现的Redis分片方案。然而首选的方案还应该是Redis官方在3.0版本中推出的Redis Cluster分片方案。 本文不会对Redis Cluster的详细安装和陈设细节举办先容,重点先容Redis Cluster带来的甜头与破绽。 Redis Cluster的手段
个中第三点是基于主从复制来实现的,Redis Cluster的每个数据分片都回收了主从复制的布局,道理和前文所述的主从复制完全同等,独一的区别是省去了Redis Sentinel这一特另外组件,由Redis Cluster认真举办一个分片内部的节点监控和自动failover。 Redis Cluster分片道理 Redis Cluster中共有16384个hash slot,Redis管帐算每个key的CRC16,将功效与16384取模,来抉择该key存储在哪一个hash slot中,同时必要指定Redis Cluster中每个数据分片认真的Slot数。Slot的分派在任何时刻点都可以举办从头分派。 客户端在对key举办读写操纵时,可以毗连Cluster中的恣意一个分片,假如操纵的key不在此分片认真的Slot范畴内,Redis Cluster会自动将哀求重定向到正确的分片上。 hash tags 在基本的分片原则上,Redis还支持hash tags成果,以hash tags要求的名目显着的key,将会确保进入统一个Slot中。譬喻:{uiv}user:1000和{uiv}user:1001拥有同样的hash tag {uiv},会生涯在统一个Slot中。 行使Redis Cluster时,pipelining、事宜和LUA Script成果涉及的key必需在统一个数据分片上,不然将会返回错误。如要在Redis Cluster中行使上述成果,就必需通过hash tags来确保一个pipeline或一个事宜中操纵的全部key都位于统一个Slot中。 有一些客户端(如Redisson)实现了集群化的pipelining操纵,可以自动将一个pipeline里的呼吁按key地址的分片举办分组,别离发到差异的分片上执行。可是Redis不支持跨分片的事宜,事宜和LUA Script照旧必需遵循全部key在一个分片上的法则要求。 主从复制 vs 集群分片 在计划软件架构时,要如安在主从复制和集群分片两种陈设方案中弃取呢? 从各个方面看,Redis Cluster都是优于主从复制的方案
那是不是代表Redis Cluster永久是优于主从复制的选择呢? 并不是。 软件架构永久不是越伟大越好,伟大的架构在带来明显甜头的同时,必然也会带来响应的破绽。回收Redis Cluster的破绽包罗:
以是说,在主从复制和集群分片两个方案中做出选择时,应该从应用软件的成果特征、数据和会见量级、将来成长筹划等方面综合思量,只在确实有须要引入数据分片时再行使Redis Cluster。 下面是一些提议:
(编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |