Redis集群都有哪些方案?
体量较小时,选择Redis Sentinel,单主Redis足以支撑业务。
体量较大时,选择Redis Cluster,通过分片,使用更多内存。
10G+的时候建议使用Redis Cluster,主要原因是:
1、一次RDB时间随着内存越大,会变得越来越久。同时,一次fork的时间也会变久。还有,重启通过RDB文件,或者AOF日志,恢复时间都会变长。
2、体量大之后,读写的QPS势必比体量小的时候大的多,那么使用Redis Cluster相比Redis Sentinel,可以分散读写压力到不同的集群中。
Redis集群如何扩容?
Redis Cluster集群的扩容
1、准备新节点
2、加入集群
3、迁移槽和数据
什么是Redis主从同步?
Redis的主从同步机制,允许Slave从Master那里,通过网络传输拷贝到完整的数据备份,从而达到主从机制。
主数据库可以读写操作,当发生写操作的时候自动将数据同步到从数据库,而从数据库一般是只读的,并接收主数据库同步过来的数据。
一个主数据库可以有多个从数据库,而一个从数据库只能有一个主数据库。
第一次同步时,主节点做一次bgsave操作,并同时将后续修改操作记录到内存buffer,待完成后将RDB文件全量同步到复制节点,复制节点接受完成后将RDB镜像加载到内存。加载完成后,再通知主节点将期间修改的操作记录同步到复制节点进行重放就完成了同步过程。
好处
通过Redis的复制功能可以很好的实现数据库的读写分离,提高服务器的负载能力。主数据库主要进行写操作,而从数据库负责读操作。
Redis Cluster的主从复制模型是怎样的?
Redis Sentinel着眼于高可用,在master宕机时会自动将slave提升为master,继续提供服务。
Redis Cluster着眼于扩展性,在单个Redis内存不足时,使用Cluster进行分片存储。
Redis Cluster方案什么情况下会导致整个集群不可用?
有A,B,C三个节点的集群,在没有复制模型的情况下,如果节点B宕机了,那么整个集群就会以为缺少5501-11000这个范围的槽而不可用。当然,这种情况也可以配置cluster-require-full-coverage=no,整个集群无需所有槽位覆盖。
Redis Cluster会有写操作丢失吗?为什么?
Redis并不能保证数据的强一致性,而是【异步复制】,这意味这在实际中集群在特定的条件下可能会丢失写操作。
注意:无论对于Redis Sentinel还是Redis Cluster方案,都是通过主从复制,所以在数据的复制方面,都存在相同的情况。
Redis集群如何选择数据库
目前无法做数据库选择,默认在0数据库