1、Redis Cluster

Redis Cluster优点:数据依照slot存储分布在多个节点,节点间数据共享,能够动态调整数据分布;可扩展性;无中心架构;高可用性;能够降低运维成本,有效提高系统的可用性以及扩展性。

Redis Cluster缺点:数据通过异步复制,不保证数据的强一致性;Client 实现复杂;节点会因为某些原因发生阻塞被判断下线;多个业务使用同一套集群的时候,不能够依据统计区分冷热数据,资源隔离性较差,非常容易出现互相影响;Slave 在集群中充当“冷备”,不能缓解读压力;Key批量操作限制;Key事务操作支持有限;Key不可以将一个很大的键值对象如 hash、list 等映射到不同的节点;不支持多数据库空间;复制结构只支持一层;避免产生hot-key,导致主库节点成为系统的短板;避免产生 big-key,导致网卡撑爆、慢查询等;重试时间应该大于cluster-node-time时间;

面试题

redis交集并集差集操作在不同集群模式下有什么不同?
答:cluster模式下不支持跨槽

2、Redis单副本

Redis单副本优点:架构简单,部署方便;高性价比;高性能;

Redis单副本缺点:不保证数据的可靠性;在缓存使用,进程重启之后,数据丢失,即是说有备用节点解决高可用性,但是,却依旧不能够解决缓存预热问题,所以说,不适用于数据可靠性要求高的业务;高性能受限于单核CPU的处理能力,CPU为主要瓶颈,所以适合操作命令简单,排序、计算较少的场景。

3、Redis自研

Redis自研优点:高可靠性、高可用性;自主可控性高;贴切业务实际需求,可缩性好,兼容性好。

Redis自研缺点:维护成本高;实现复杂,开发成本高;需要建立配套的周边设施,如监控,域名服务,存储元数据信息的数据库等。

4、Redis Sentinel

Redis Sentinel优点:部署简单;可以解决Redis主从模式下高可用切换问题;能够很容易的实现Redis数据节点的线形扩展,轻松突破Redis自身单线程瓶颈,能够极大的满足 Redis大容量或者是高性能的业务需求;能够实现一套Sentinel监控一组Redis数据节点或者是多组数据节点

Redis Sentinel缺点:原理理解复杂,部署相对Redis主从模式要更为复杂;资源浪费,Redis数据节点当中slave节点作为备份节点不提供服务;不可以解决读写分离的问题,实现起来比较的复杂;Redis Sentinel主要是针对Redis数据节点中的主节点的高可用切换,对Redis的数据节点做失败判定分为主观下线和客观下线两种,对于 Redis的从节点有对节点做主观下线操作,并且,不执行故障转移。

5、Redis多副本

Redis多副本优点:高可靠性;读写分离策略,从节点能够扩展主库节点的读能力,有效应对大并发量的读操作。

Redis多副本缺点:故障恢复复杂,假如,没有RedisHA系统,那么在主库节点出现故障的时候,就要手动的去将一个从节点晋升为主节点,与此同时,要通知业务方变更配置,并且,还要让其它从库节点去复制新主库节点,整个过程需要人为干涉,比较复杂;主库的写能力受到单机的限制,可以考虑分片;主库的存储能力受到单机的限制,可以考虑 Pika;原生复制的弊端在早期的版本中也会比较突出。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐