部署模式 | 优点 | 缺点 | 解决的问题 |
---|---|---|---|
单机 | 部署简单、节省资源 | 非常不安全。如果出现断电或者redis宕机的情况,大部分情况就会导致数据的丢失,无法保证高可用,也无法很好的支持横向扩展(只能增加宿主) | 一般开发时和开发环境使用该模式 |
主从复制 |
通过Redis持久化功能,保证了即使服务器宕机或者断电的情况下也不会损失(或少量损失)数据 读写分离
| master节点挂了以后,redis就不能对外提供写服务了,因为剩下的slave不能成为master。 当主库遇到异常中断服务后,开发者可以通过手动的方式选择一个从库来升格为主库,但需要手动操作,难以实现服务的自动化恢复 | 克服单点故障:复制多个副本以部署在不同的服务器上,即使有一台服务器出现故障,其他服务器依然可以继续提供服务。 负载均衡:所有客户端都访问一个节点肯定会影响Redis工作效率,有了主从以后,查询操作就可以通过查询从节点来完成。 |
哨兵sentinel | 基本已经可以实现高可用,也满足读写分离 | 即使使用的是哨兵模式,redis每个实例的数据也是全量存储的,即就是每个redis存储的内容都是完整的数据,浪费内存且有木桶效应。 同时,当数据量过大到一台服务器存放不下的情况时,主从模式或sentinel模式就不能满足需求了,这个时候需要对存储的数据进行分片,将数据存储到多个Redis实例中 | 哨兵工具来实现服务的自动化系统监控和故障恢复功能。哨兵的作用就是监控redis主库、从库是否正常运行,主库出现故障后自动将从库转换为主库。 |
集群 | 7 * 24提供服务 扩容方便:因为Redis的数据是根据一定规则分配到cluster的不同机器的,当数据量过大时,可以新增机器进行扩容 | 需要大量服务器资源,集群至少需要3主3从,且每个实例使用不同的配置文件 | 最大化利用内存,可以采用集群进行分布式存储。即每台redis存储不同的内容。适合数据量巨大的缓存要求,当数据量不是很大使用sentinel即可。 |
参考:
https://cloud.tencent.com/developer/article/1643898
https://www.huaweicloud.com/articles/0d5d5e94e1528c1b66ae3e471cbf64fe.html