我们都知道,Redis实现数据持久化有AOF和RDB两个方法,但是即使有这两个方法,也还是存在服务不可用的问题,为啥子嘞?
假设你只有一台服务器,然后这台机器宕机了,这个时候他会以上面的两种方式恢复数据,但是在恢复数据的过程中,新来的数据怎么办?是不是就服务不到了,机器都宕机了还提供个锤子的服务。
Redis之所以牛逼,一方面是因为他快,另一方面是因为高可靠性。所谓的高可靠性就是指,尽量的少丢数据,和服务端尽量少中断。AOF和RDB保证了前者,但是不能保证后者。那咋办呢?
方法肯定是有的,Redis针对和服务端少中断这个问题是这么处理的,将一份数据保存在多个实例上。这样子,即使一台机器完蛋,其他机器也可以接着进行服务,不会导致整个Redis不能使用。
这样子是不是就解决了一开始的问题?我就知道你说是,确实是解决了,但是还有有问题。这么多机器,如何保证每台机器数据的一致性呢?而且客户端的读写操作可以下发给每一台机器吗?
带着问题我们接着絮叨。
这个时候我们的读写分离就闪亮登场了,读写分离肯定要依赖主从库喽,所以Redis有个解决的方法,那就是采用主从库,主库负责写,然后数据同步给从库,客户端读取数据则可以从任意一个库中读取(其实就是从任意一台机器读取)。
来个图?这个图就很形象----图摘自互联网