1.Redis最主要的主题有哪些?

持久化、复制(主从架构)、哨兵(高可用,主备切换)、redis cluster(海量数据+横向扩容+高可用/主备切换)

  1. 持久化:高可用的一部分,在发生redis集群灾难的情况下(比如说部分master+slave全部死掉了),就需要通过持久化快速进行数据恢复,快速实现服务可用,才能实现整个系统的高可用;
  2. 复制:主从架构中用到(一个Master至少一个slave),master -> slave 数据复制 ;读写分离的架构,写通过master节点,读slave节点,横向扩容slave支撑更高的读吞吐,读高并发;
  3. 哨兵:主从架构实现高可用(一个Master至少一个slave),在master故障的时候,快速将slave切换成master,实现快速的灾难恢复,实现高可用性;
  4. redis cluster:多master读写,数据分布式存储,横向水平扩容,快速支撑更大的数据量+更高的读写QPS,自动进行master -> slave的主备切换,实现高可用;

2.企业级 Redis 架构的选择

主从架构

如果你的数据量不大单master就可以容纳,一般来说你的缓存的总量在10G以内就可以,那么建议按照以下架构去部署redis

【redis持久化+备份方案(文件备份)+容灾方案(文件恢复)+replication(主从+读写分离)+sentinal(哨兵集群,3个节点,高可用性)】

可以支撑的数据量在10G以内,可以支撑的写QPS在几万左右,可以支撑的读QPS可以上10万以上(随需求水平扩容slave节点就可以),可用性在99.99%

Cluster集群架构

如果你的数据量很大,比如某些大型电商网站的商品详情页的架构数据量是很大的

数据是海量的

我们就必须采用:redis cluster

多master分布式存储数据,水平扩容(Redis自己的算法将数据分布在不同的Master节点上)

支撑更多的数据量只要扩容master即可

读写QPS分别都达到几十万都没问题,只要扩容master即可,

【redis cluster 读写分离支持不太好 readonly才能去slave上读;一般读写都在Master上】

支撑99.99%可用性也没问题

slave -> master的主备切换:可以冗余一些slave去进一步提升可用性的方案(每个master挂一个slave,但是整个集群再加个3个slave冗余一下:万一某个Slave挂了Cluster会自动将冗余的Slave挂载过去)